#include <bits/stdc++.h>
using namespace std;
int main() {
cin.tie(0);
ios_base::sync_with_stdio(0);
int t;
cin>>t;
for(int o=0;o<t;o++) {
int n;
cin>>n;
vector <pair<int,bool>> vec;
int akt = 0, ile = 0, pocz = 0;
for(int i=0;i<n;i++) {
char x;
cin>>x;
if(x=='1') {
pocz ++;
if(ile == 0) {
vec.push_back({2*akt,1});
}
else {
vec.push_back({akt,0});
}
ile++;
akt = 0;
}
else {
akt ++;
}
}
vec.push_back({2*akt,1});
sort(vec.begin(),vec.end());
/*for(auto ele : vec) {
cout<<ele.first<<' '<<ele.second<<'\n';
}*/
int wyn = 0;
int dod = 0;
for(int i = ile;i>=0;i--) {
if(dod*2 >= vec[i].first) {
if(vec[i].second)
wyn += vec[i].first/2;
else
wyn += vec[i].first;
continue;
}
if(!vec[i].second) {
//cout<<"i: "<<i<<'\n';
if(vec[i].first - dod*2 == 1)
wyn += dod*2;
else
wyn += dod*2 + 1;
dod += 2;
}
else {
/*if(dod >= vec[i].first) {
wyn += vec[i].first;
continue;
}*/
wyn += dod;
dod += 1;
}
}
cout<<wyn+pocz<<'\n';
}
}
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 | #include <bits/stdc++.h> using namespace std; int main() { cin.tie(0); ios_base::sync_with_stdio(0); int t; cin>>t; for(int o=0;o<t;o++) { int n; cin>>n; vector <pair<int,bool>> vec; int akt = 0, ile = 0, pocz = 0; for(int i=0;i<n;i++) { char x; cin>>x; if(x=='1') { pocz ++; if(ile == 0) { vec.push_back({2*akt,1}); } else { vec.push_back({akt,0}); } ile++; akt = 0; } else { akt ++; } } vec.push_back({2*akt,1}); sort(vec.begin(),vec.end()); /*for(auto ele : vec) { cout<<ele.first<<' '<<ele.second<<'\n'; }*/ int wyn = 0; int dod = 0; for(int i = ile;i>=0;i--) { if(dod*2 >= vec[i].first) { if(vec[i].second) wyn += vec[i].first/2; else wyn += vec[i].first; continue; } if(!vec[i].second) { //cout<<"i: "<<i<<'\n'; if(vec[i].first - dod*2 == 1) wyn += dod*2; else wyn += dod*2 + 1; dod += 2; } else { /*if(dod >= vec[i].first) { wyn += vec[i].first; continue; }*/ wyn += dod; dod += 1; } } cout<<wyn+pocz<<'\n'; } } |
English