Submission #829988

#TimeUsernameProblemLanguageResultExecution timeMemory
829988MohamedAhmed04Lamps (JOI19_lamps)C++14
100 / 100
100 ms94508 KiB
#include <bits/stdc++.h> using namespace std ; const int MAX = 1e6 + 10 ; int arr[MAX] ; int n ; int dp[MAX][3] ; string s , t ; int solve(int idx , int cur) { if(idx == n) return 0 ; int &ret = dp[idx][cur] ; if(ret != -1) return ret ; ret = 1e9 ; bool prvflip = false ; char c = '0' + cur ; if(idx && cur == 2) c = s[idx-1] ; if(idx && c != t[idx-1]) prvflip = true ; for(int i = 0 ; i <= 2 ; ++i) { c = '0' + i ; if(i == 2) c = s[idx] ; bool curflip = (c != t[idx]) ; ret = min(ret , solve(idx+1 , i) + (curflip && !prvflip) + (i != 2 && i != cur)) ; } return ret ; } int main() { memset(dp , -1 , sizeof(dp)) ; ios_base::sync_with_stdio(0) ; cin.tie(0) ; cin>>n ; cin>>s ; cin>>t ; return cout<<solve(0 , 2)<<"\n" , 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...