#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while (t--) { int n; cin >> n; string a, b; cin >> a; b = a; bool zera = true; int jedynki = 0, jedynki2 = 0; for (int i = 0; i < n; i++) { if (a[i] == '1') jedynki++; } if (jedynki == 0) cout << "0" << '\n'; else if (jedynki == n) cout << jedynki << '\n'; else { while (zera) { bool zrobione = false; for (int i = 1; i < n-1; i++) { if (a[i] == '0') { if (a[i-1] != '1' || a[i+1] != '1') { a[i] = '2'; zrobione = true; break; } } } if (!zrobione && a[0] == '0') { a[0] = '2'; zrobione = true; } if (!zrobione && a[n-1] == '0') { a[n-1] = '2'; zrobione = true; } if (!zrobione) { for (int i = 1; i < n-1; i++) { if (a[i] == '0') { a[i] = '2'; zrobione = true; break; } } } if (zrobione) { if (a[0] == '1' && a[1] == '0') { b[1] = '1'; } if (a[n-1] == '1' && a[n-2] == '0') { b[n-2] = '1'; } for (int i = 1; i < n - 1; i++) { if (a[i] == '1' && a[i-1] == '0') { b[i-1] = '1'; } if (a[i] == '1' && a[i+1] == '0') { b[i+1] = '1'; } } } else cout << "WTF" << '\n'; bool tmp = false; for (int i = 0; i < n; i++) { if (a[i] != '2') a[i] = b[i]; if (a[i] == '0') tmp = true; } if (!tmp) zera = false; } for (int i = 0; i < n; i++) if (a[i] == '1') jedynki2++; cout << jedynki2 << '\n'; } } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | #include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while (t--) { int n; cin >> n; string a, b; cin >> a; b = a; bool zera = true; int jedynki = 0, jedynki2 = 0; for (int i = 0; i < n; i++) { if (a[i] == '1') jedynki++; } if (jedynki == 0) cout << "0" << '\n'; else if (jedynki == n) cout << jedynki << '\n'; else { while (zera) { bool zrobione = false; for (int i = 1; i < n-1; i++) { if (a[i] == '0') { if (a[i-1] != '1' || a[i+1] != '1') { a[i] = '2'; zrobione = true; break; } } } if (!zrobione && a[0] == '0') { a[0] = '2'; zrobione = true; } if (!zrobione && a[n-1] == '0') { a[n-1] = '2'; zrobione = true; } if (!zrobione) { for (int i = 1; i < n-1; i++) { if (a[i] == '0') { a[i] = '2'; zrobione = true; break; } } } if (zrobione) { if (a[0] == '1' && a[1] == '0') { b[1] = '1'; } if (a[n-1] == '1' && a[n-2] == '0') { b[n-2] = '1'; } for (int i = 1; i < n - 1; i++) { if (a[i] == '1' && a[i-1] == '0') { b[i-1] = '1'; } if (a[i] == '1' && a[i+1] == '0') { b[i+1] = '1'; } } } else cout << "WTF" << '\n'; bool tmp = false; for (int i = 0; i < n; i++) { if (a[i] != '2') a[i] = b[i]; if (a[i] == '0') tmp = true; } if (!tmp) zera = false; } for (int i = 0; i < n; i++) if (a[i] == '1') jedynki2++; cout << jedynki2 << '\n'; } } return 0; } |