Submission #1268695

#TimeUsernameProblemLanguageResultExecution timeMemory
1268695khfaresLamps (JOI19_lamps)C++20
4 / 100
59 ms57056 KiB
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
using ll  = long long;
using pll = pair<ll, ll>;
void solve() {
    ll n; cin >> n;
    string a, b; cin >> a >> b;
    vector<vector<ll>> dp(n, vector<ll>(3, 1e18));
    dp[0][0] = ((a[0] == b[0]) ? 0 : 1);
    dp[0][1] = ((0 == b[0]) ? 1 : 2);
    dp[0][2] = ((1 == b[0]) ? 1 : 2);

    for (ll i = 1; i < n; i++) {
        for (ll prev = 0; prev < 3; prev++) {
            char xprev = ((prev == 0) ? a[i-1] : ((prev == 1) ? '0' : '1'));
            bool dprev = (xprev != b[i-1]);
            for (ll cur = 0; cur < 3; cur++) {
                char x = ((cur == 0) ? a[i] : ((cur == 1) ? '0' : '1'));
                ll cost;
                if (cur == 0) cost = 0;
                else if (cur == 1) cost = (prev == 1 ? 0 : 1);
                else  cost = (prev == 2 ? 0 : 1);
                bool d = (x != b[i]);
                dp[i][cur] = min(dp[i][cur], dp[i-1][prev]+cost+((d && !dprev) ? 1 : 0));
            }
        }
    }
    cout << min(dp[n-1][0], min(dp[n-1][1], dp[n-1][2])) << endl;
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    //___________________________
    solve();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...