Submission #766790

#TimeUsernameProblemLanguageResultExecution timeMemory
766790DorostLamps (JOI19_lamps)C++17
100 / 100
53 ms27900 KiB
/*  * In the name of GOD  */

#include "bits/stdc++.h"

using namespace std;

typedef long long ll; 
typedef pair <int, int> pii;
#define F first
#define S second
#define mk make_pair
const int N = 1012345;
int dp[N][3][2];

int32_t main() {
    ios::sync_with_stdio(false);
    cin.tie();
    cout.tie();
    int n, ans = N;
    string a, b;
    cin >> n >> a >> b;
    for (int i = 0; i <= n; i++) {
        for (int j = 0; j <= 2; j++) {
            for (int k = 0; k <= 1; k++) {
                dp[i][j][k] = N;
                if (i == 0) {
                    if (j == 2 && k == 0)
                        dp[i][j][k] = 0;
                    continue;
                }
                int x = (j == 2 ? a[i - 1] - '0' : j); 
                x ^= k;
                if (x != b[i - 1] - '0') {
                    continue;
                }
                for (int j2 = 0; j2 <= 2; j2++) {
                    for (int k2 = 0; k2 <= 1; k2++) {
                        dp[i][j][k] = min(dp[i][j][k], dp[i - 1][j2][k2] + ((j != 2) && (j2 != j)) + ((k != 0) && (k != k2)));
                    }
                }
                if (i == n)
                    ans = min(ans, dp[i][j][k]);
            }
        }
    }   
    cout << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...