Submission #69855060
Source Code Expand
#include <bits/stdc++.h>
#ifdef LOCAL
#include "debug.h"
#else
#define dbg(...) 0
#endif
using namespace std;
using ll = long long;
using db = double;
const ll N = 1e6 + 5;
const ll md = 998244353;
const ll MOD = 1e9 + 7;
const ll INF = 0x3f3f3f3f3f3f3f;
const db PI = acos(-1);
const db eps = 1e-6;
const db E = 2.718281828459045;
typedef pair<ll, ll> PLL;
#define fi first
#define se second
ll pre0[N], pre1[N], suf0[N], suf1[N];
void solve()
{
ll n;
cin >> n;
string s;
cin >> s;
s = '#' + s;
for (ll i = 1; i <= n; i++)
{
if (s[i] == '0')
pre0[i] = suf0[i] = 1;
else
pre1[i] = suf1[i] = 1;
}
suf1[n + 1] = suf0[n + 1] = 0;
for (ll i = 1; i <= n; i++)
{
pre0[i] += pre0[i - 1];
pre1[i] += pre1[i - 1];
}
for (ll i = n; i >= 1; i--)
{
suf0[i] += suf0[i + 1];
suf1[i] += suf1[i + 1];
}
ll ans = 1e18;
ll l = 0, r = 0;
for (ll i = 1; i <= n; i++)
{
if (s[i] == '1')
{
r = i;
if (s[i] == '1' && l == 0)
l = i;
}
else
{
// cout << l << ' ' << r << '\n';
if (l != 0 && r != 0)
{
ll res0 = pre0[l - 1] + suf0[r + 1];
ll res1 = 2 * (pre1[l - 1] + suf1[r + 1]);
ans = min(res0 + res1, ans);
}
l = 0;
}
}
if (l != 0 && r != 0)
{
ll res0 = pre0[l - 1] + suf0[r + 1];
ll res1 = 2 * (pre1[l - 1] + suf1[r + 1]);
ans = min(res0 + res1, ans);
}
l = 0, r = 0;
for (ll i = 1; i <= n; i++)
{
if (s[i] == '0')
{
r = i;
if (s[i] == '0' && l == 0)
l = i;
}
else
{
if (l != 0 && r != 0)
{
ll res0 = 2 * (pre0[l - 1] + suf0[r + 1]);
ll res1 = (pre1[l - 1] + suf1[r + 1]);
ans = min(res0 + res1, ans);
}
l = 0;
}
}
if (l != 0 && r != 0)
{
ll res0 = 2 * (pre0[l - 1] + suf0[r + 1]);
ll res1 = (pre1[l - 1] + suf1[r + 1]);
ans = min(res0 + res1, ans);
}
for (ll i = 1; i <= n; i++)
pre0[i] = pre1[i] = suf0[i] = suf1[i] = 0;
cout << ans << '\n';
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int T;
T = 1;
cin >> T;
while (T--)
{
solve();
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Pop and Insert |
| User | AChievedreaM |
| Language | C++ 20 (gcc 12.2) |
| Score | 400 |
| Code Size | 2623 Byte |
| Status | AC |
| Exec Time | 15 ms |
| Memory | 19500 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 400 / 400 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt |
| All | 00_sample_00.txt, 01_small_00.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 03_handmade_00.txt, 03_handmade_01.txt, 03_handmade_02.txt, 03_handmade_03.txt, 03_handmade_04.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3420 KiB |
| 01_small_00.txt | AC | 14 ms | 3492 KiB |
| 02_random_00.txt | AC | 4 ms | 3420 KiB |
| 02_random_01.txt | AC | 5 ms | 3860 KiB |
| 02_random_02.txt | AC | 6 ms | 6620 KiB |
| 02_random_03.txt | AC | 13 ms | 19340 KiB |
| 02_random_04.txt | AC | 14 ms | 19500 KiB |
| 02_random_05.txt | AC | 15 ms | 19436 KiB |
| 02_random_06.txt | AC | 14 ms | 19432 KiB |
| 03_handmade_00.txt | AC | 13 ms | 19392 KiB |
| 03_handmade_01.txt | AC | 13 ms | 19388 KiB |
| 03_handmade_02.txt | AC | 13 ms | 19356 KiB |
| 03_handmade_03.txt | AC | 13 ms | 19272 KiB |
| 03_handmade_04.txt | AC | 13 ms | 19480 KiB |