Submission #391351

#TimeUsernameProblemLanguageResultExecution timeMemory
391351qwerasdfzxclLamps (JOI19_lamps)C++14
4 / 100
29 ms16076 KiB
#include <bits/stdc++.h> typedef long long ll; using namespace std; string x, y; int dp[1001000][3]; int calc(int n){ for (int i=0;i<n;i++) dp[i][0] = 1e9, dp[i][1] = 1e9, dp[i][2] = 1e9; dp[0][0] = 1; if (x[0]!=y[0]) dp[0][1] = 1, dp[0][2] = 1; else dp[0][2] = 0; for (int i=1;i<n;i++){ if (x[i]==y[i]){ if (y[i-1]!=y[i]) dp[i][0] = dp[i-1][2]+1; else dp[i][0] = min(dp[i-1][0], dp[i-1][2]+1); dp[i][2] = dp[i-1][2]; } else{ if (y[i-1]!=y[i]) dp[i][0] = dp[i-1][2]+1; else dp[i][0] = min(dp[i-1][0], dp[i-1][2]+1); if (x[i-1]==y[i-1]) dp[i][1] = dp[i-1][2]+1; else dp[i][1] = min(dp[i-1][2]+1, dp[i-1][1]); dp[i][2] = min(dp[i][0], dp[i][1]); } } //for (int i=0;i<n-1;i++) cout << dp[i][2]; return dp[n-1][2]; } int main(){ cin.tie(NULL); ios_base::sync_with_stdio(false); int n; cin >> n >> x >> y; int ans = calc(n); int pt1=-1, pt2=-1; for (int i=0;i<n;i++) if(x[i]!=y[i]){ pt1=i; break; } for (int i=n-1;i>=0;i--) if(x[i]!=y[i]){ pt2=i; break; } if (pt1!=-1){ for (int i=pt1;i<=pt2;i++){ if (x[i]=='0') x[i] = '1'; else x[i] = '0'; } ans = min(ans, calc(n)+1); } cout << ans; 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...