Submission #126425

#TimeUsernameProblemLanguageResultExecution timeMemory
126425TadijaSebezLamps (JOI19_lamps)C++11
100 / 100
452 ms43644 KiB
#include <bits/stdc++.h> using namespace std; const int N=1000050; const int inf=1e9+7; int dp[N][2][5]; char a[N],b[N]; int main() { int n; scanf("%i %s %s",&n,a+1,b+1); for(int i=0;i<2;i++) for(int j=0;j<5;j++) dp[0][i][j]=inf; dp[0][0][0]=0; for(int i=1;i<=n;i++) { for(int j=0;j<2;j++) { for(int k=0;k<5;k++) { int mask=min(k,3)+j*4; int now=a[i]-'0'; if(k>0 && (k&1)) now=0; else if(k>0) now=1; if(j) now^=1; dp[i][j][k]=inf; if(now==b[i]-'0') { for(int j2=0;j2<2;j2++) { for(int k2=0;k2<5;k2++) { if(k>=3 && k2>=3 && k!=k2) continue; int mask2=min(k2,3)+j2*4; int dif=__builtin_popcount(mask^(mask&mask2)); dp[i][j][k]=min(dp[i][j][k],dp[i-1][j2][k2]+dif); } } } } } } int ans=inf; for(int j=0;j<2;j++) for(int k=0;k<5;k++) ans=min(ans,dp[n][j][k]); printf("%i\n",ans); return 0; }

Compilation message (stderr)

lamp.cpp: In function 'int main()':
lamp.cpp:10:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%i %s %s",&n,a+1,b+1);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...