# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1214646 | CrabCNH | Lamps (JOI19_lamps) | C++20 | 44 ms | 39512 KiB |
#include <bits/stdc++.h>
#define task "BriantheCrab"
#define int long long
#define pii pair <int, int>
#define fi first
#define se second
#define szf sizeof
#define sz(s) (int)((s).size())
#define all(v) (v).begin(), (v).end()
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
using namespace std;
template <class T> void minimize (T &t, T f) {if (t > f) t = f;}
template <class T> void maximize (T &t, T f) {if (t < f) t = f;}
const int maxN = 1e6 + 10;
const int inf = 1e9 + 7;
int n, a[maxN], b[maxN];
int dp[maxN][3];
void solve () {
cin >> n;
for (int i = 1; i <= n; i ++) {
char c;
cin >> c;
a[i] = (c == '1');
}
for (int i = 1; i <= n; i ++) {
char c;
cin >> c;
b[i] = (c == '1');
dp[i][0] = dp[i][1] = dp[i][2] = inf;
}
dp[1][0] = 1 + ((0 ^ b[1]) == 1);
dp[1][1] = 1 + ((1 ^ b[1]) == 1);
dp[1][2] = ((a[1] ^ b[1]) == 1);
for (int i = 2; i <= n; i ++) {
minimize (dp[i][0], dp[i - 1][0] + ((0 ^ b[i]) == 1 && (0 ^ b[i - 1]) == 0));
minimize (dp[i][0], dp[i - 1][1] + ((0 ^ b[i]) == 1 && (1 ^ b[i - 1]) == 0) + 1);
minimize (dp[i][0], dp[i - 1][2] + ((0 ^ b[i]) == 1 && (a[i - 1] ^ b[i - 1]) == 0) + 1);
minimize (dp[i][1], dp[i - 1][0] + ((1 ^ b[i]) == 1 && (0 ^ b[i - 1]) == 0) + 1);
minimize (dp[i][1], dp[i - 1][1] + ((1 ^ b[i]) == 1 && (1 ^ b[i - 1]) == 0));
minimize (dp[i][1], dp[i - 1][2] + ((1 ^ b[i]) == 1 && (a[i - 1] ^ b[i - 1]) == 0) + 1);
minimize (dp[i][2], dp[i - 1][0] + ((a[i] ^ b[i]) == 1 && (0 ^ b[i - 1]) == 0));
minimize (dp[i][2], dp[i - 1][1] + ((a[i] ^ b[i]) == 1 && (1 ^ b[i - 1]) == 0));
minimize (dp[i][2], dp[i - 1][2] + ((a[i] ^ b[i]) == 1 && (a[i - 1] ^ b[i - 1]) == 0));
}
cout << min ({dp[n][0], dp[n][1], dp[n][2]});
return;
}
signed main () {
cin.tie (nullptr) -> sync_with_stdio (false);
if (fopen (task".inp", "r")) {
freopen (task".inp", "r", stdin);
freopen (task".out", "w", stdout);
}
int t = 1;
//cin >> t;
while (t --) {
solve ();
}
return 0;
}
// thfv
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |