Submission #129121

#TimeUsernameProblemLanguageResultExecution timeMemory
129121mahmoudbadawyLamps (JOI19_lamps)C++17
0 / 100
154 ms28460 KiB
#include <bits/stdc++.h> using namespace std; const int N=1e6+5; int d1[N],d2[N]; int mem[N]; string a,b; int n; int stat(int x) { // 0 01 1 10 2 00 3 11 if(a[x]==b[x]) return (a[x]=='0'?2:3); return (a[x]=='0'?0:1); } int f1(int x,int y) { return d1[y]-(x?d1[x-1]:0)+(stat(x)<2); } int f2(int x,int y) { return d2[y]-(x?d2[x-1]:0)+(stat(x)>=2); } vector<int> cmp; int pos[N],st[N]; int main() { cin >> n >> a >> b; cmp.push_back(stat(0)); for(int i=1;i<n;i++) { if(stat(i)==cmp.back()) pos[i]=pos[i-1]; else { pos[i]=cmp.size(); st[cmp.size()]=i; cmp.push_back(stat(i)); } } for(int i=1;i<n;i++) { d1[i]=(stat(i)!=stat(i-1)&&(stat(i)<2))+d1[i-1]; int mn=cmp[pos[i]],mx=cmp[pos[i]-1]; d2[i]=((stat(i)!=stat(i-1))&&(stat(i)>=2))+d2[i-1]; if(stat(i)!=stat(i-1)) { if(pos[i]>=2&&cmp[pos[i]]==cmp[pos[i]-2] && a[i]!=a[i-1]) { if(stat(i)<2) d1[i]--; if(stat(i)>=2) d2[i]--; } } } /*for(int i=0;i<n;i++) cout << d1[i] << " "; cout << endl; for(int i=0;i<n;i++) cout << d2[i] << " "; cout << endl;*/ for(int i=n-1;i>=0;i--) { mem[i]=(1<<30); for(int j=i;j<n;j++) { mem[i]=min(mem[i],min(f1(i,j)+mem[j+1],1+f2(i,j)+mem[j+1])); } if(pos[i]+2<n) { int ind=st[pos[i]+2]; if(stat(ind)!=stat(ind-1)) { if(cmp[ind]==cmp[i] && a[ind]!=a[ind-1]) { for(int j=ind;j<n;j++) { if(stat(ind)<2) d1[j]++; if(stat(ind)>=2) d2[j]++; } } } } } cout << mem[0] << endl; }

Compilation message (stderr)

lamp.cpp: In function 'int main()':
lamp.cpp:51:7: warning: unused variable 'mn' [-Wunused-variable]
   int mn=cmp[pos[i]],mx=cmp[pos[i]-1];
       ^~
lamp.cpp:51:22: warning: unused variable 'mx' [-Wunused-variable]
   int mn=cmp[pos[i]],mx=cmp[pos[i]-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...