#include <bits/stdc++.h> using namespace std; int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); int t, n; // ifstream plik; plik.open("200.txt"); if (plik.good() == false) { cout << "B"; return 0; } string st; //plik >> t; cin >> t; for (int i = 0; i < t; i++) { priority_queue <int> wolne; //dlugosc spojnych 0 //plik >> n; plik >> st; cin >> n >> st; int l=0, p=0,s=0,dni=0,ile0=0,zaszczepionych=0; bool a = 1; while (wolne.size()) wolne.pop(); int j = 0; for (; j < st.length(); j++) { if (st[j]=='0') { ile0++; if (a) l++; } else { if(j-s-1>=0 && !a) wolne.push(j-s); s = j + 1; a = 0; } } if (ile0 ==st.length()) { cout << "0\n"; continue; } p = j - s; //cout << l << " " << p << endl; if (l > 1 || wolne.size()==0) { zaszczepionych += l; dni++; //cout << "L"; } if (p - dni > dni+1 || p-dni>wolne.top() - dni * 2) { zaszczepionych += p - dni; dni++; //cout << "P";//cout << zaszczepionych<<endl; } //cout << zaszczepionych << endl; while (wolne.size() && wolne.top()-(dni*2)>0) { zaszczepionych += wolne.top() - (dni * 2); //cout << wolne.top() << " " << dni << endl; if (wolne.top() - (dni * 2) >= 2) { if(wolne.top() - (dni * 2) > 2) dni++; zaszczepionych--; } dni++; wolne.pop(); } cout << st.length() -zaszczepionych << "\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 | #include <bits/stdc++.h> using namespace std; int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); int t, n; // ifstream plik; plik.open("200.txt"); if (plik.good() == false) { cout << "B"; return 0; } string st; //plik >> t; cin >> t; for (int i = 0; i < t; i++) { priority_queue <int> wolne; //dlugosc spojnych 0 //plik >> n; plik >> st; cin >> n >> st; int l=0, p=0,s=0,dni=0,ile0=0,zaszczepionych=0; bool a = 1; while (wolne.size()) wolne.pop(); int j = 0; for (; j < st.length(); j++) { if (st[j]=='0') { ile0++; if (a) l++; } else { if(j-s-1>=0 && !a) wolne.push(j-s); s = j + 1; a = 0; } } if (ile0 ==st.length()) { cout << "0\n"; continue; } p = j - s; //cout << l << " " << p << endl; if (l > 1 || wolne.size()==0) { zaszczepionych += l; dni++; //cout << "L"; } if (p - dni > dni+1 || p-dni>wolne.top() - dni * 2) { zaszczepionych += p - dni; dni++; //cout << "P";//cout << zaszczepionych<<endl; } //cout << zaszczepionych << endl; while (wolne.size() && wolne.top()-(dni*2)>0) { zaszczepionych += wolne.top() - (dni * 2); //cout << wolne.top() << " " << dni << endl; if (wolne.top() - (dni * 2) >= 2) { if(wolne.top() - (dni * 2) > 2) dni++; zaszczepionych--; } dni++; wolne.pop(); } cout << st.length() -zaszczepionych << "\n"; } return 0; } |