7145 | 2023. 12. 31 14:08:47 | xxx | Takaros Sorozat (80 pont) | cpp17 | Elfogadva 80/80 | 8ms | 9956 KiB |
#include <bits/stdc++.h>
using namespace std;
void solve() {
int n;
cin >> n;
string s;
cin >> s;
vector<int> a(n+5);
for(int i = 1; i <= n; i++) {
a[i] = s[i-1]-'0';
}
vector<int> frt(n+1), bw(n+2), pref(n+5), preb(n+5);
for(int i = 1; i <= n; i++) {
frt[i] = frt[i-1] + a[i];
if (a[i]) pref[i] = i;
else pref[i] = pref[i-1];
}
for(int i = n; i > 0; i--) {
bw[i] = bw[i+1] + !a[i];
if (!a[i]) preb[i] = i;
else preb[i] = preb[i+1];
}
int ans1 = INT_MAX;
for(int i = 0; i <= n; i++) {
ans1 = min(ans1, frt[i] + bw[i+1]);
}
cout << ans1 << endl;
bool T = false;
vector<int> dpf(n+2), dpb(n+2);
// if (a[1]) dpf[1] = 1;
for(int i = 1; i <= n; i++) {
dpf[i] = dpf[i-1];
if (a[i] && pref[i-1]) {
if (abs(pref[i-1] - i) <= 3) {
dpf[i] = dpf[pref[i-1]-1] + 1;
} else {
dpf[i] = dpf[pref[i-1]] + 1;
}
} else if (a[i]) dpf[i] = 1;
}
for(int i = n; i > 0; i--) {
dpb[i] = dpb[i+1];
if(!a[i] && preb[i+1]) {
if(abs(preb[i+1]-i) <= 3) {
dpb[i] = dpb[preb[i+1]+1] + 1;
} else {
dpb[i] = dpb[preb[i+1]] + 1;
}
} else if (!a[i]) dpb[i] = 1;
}
int ans2 = INT_MAX;
for(int i = 0; i <= n; i++) {
ans2 = min(ans2, dpf[i] + dpb[i+1]);
}
cout << ans2 << '\n';
}
int main() {
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int tt=1;
//cin >> tt;
while(tt--) {
solve();
}
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 80/80 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1828 KiB | |||
2 | Elfogadva | 0/0 | 8ms | 7808 KiB | |||
3 | Elfogadva | 4/4 | 3ms | 2232 KiB | |||
4 | Elfogadva | 4/4 | 3ms | 2340 KiB | |||
5 | Elfogadva | 4/4 | 3ms | 2540 KiB | |||
6 | Elfogadva | 4/4 | 3ms | 2756 KiB | |||
7 | Elfogadva | 4/4 | 3ms | 2844 KiB | |||
8 | Elfogadva | 4/4 | 3ms | 2964 KiB | |||
9 | Elfogadva | 4/4 | 3ms | 3052 KiB | |||
10 | Elfogadva | 4/4 | 3ms | 3276 KiB | |||
11 | Elfogadva | 4/4 | 3ms | 3276 KiB | |||
12 | Elfogadva | 4/4 | 3ms | 3640 KiB | |||
13 | Elfogadva | 4/4 | 6ms | 8964 KiB | |||
14 | Elfogadva | 4/4 | 6ms | 8964 KiB | |||
15 | Elfogadva | 4/4 | 6ms | 9372 KiB | |||
16 | Elfogadva | 4/4 | 6ms | 9328 KiB | |||
17 | Elfogadva | 4/4 | 6ms | 9396 KiB | |||
18 | Elfogadva | 4/4 | 6ms | 9524 KiB | |||
19 | Elfogadva | 4/4 | 6ms | 9660 KiB | |||
20 | Elfogadva | 4/4 | 8ms | 9852 KiB | |||
21 | Elfogadva | 4/4 | 8ms | 9876 KiB | |||
22 | Elfogadva | 4/4 | 8ms | 9956 KiB |