Submission #639684

#TimeUsernameProblemLanguageResultExecution timeMemory
639684ningia203Igra (COCI17_igra)C++14
90 / 100
1 ms340 KiB
#include<bits/stdc++.h> using namespace std; long n,F[5007],D[10][10],cnt; string s,t,k; bool vs[10007]; int main(){ ios::sync_with_stdio(0);cin.tie(0); cin>>n; cin>>s; cin>>t; for(long i=0; i<n; i++){ if(s[i]=='a') D[1][1]+=1; else if(s[i]=='b') D[1][2]+=1; else D[1][3]+=1; } for(long i=0; i<n; i++){ if(t[i]=='a') D[2][1]+=1; else if(t[i]=='b') D[2][2]+=1; else D[2][3]+=1; } D[3][1]=D[2][1]; D[3][2]=D[2][2]; D[3][3]=D[2][3]; //cout<<s<<'\n'; cnt=0; for(long i=n-1; i>=0; i--){ if(cnt>=D[1][3]) break; if(t[i]=='a'){ if(D[1][2]<=D[2][3]+D[2][1]-1){ cnt++; s[i]='c'; vs[i]=true; D[2][1]-=1; } } if(t[i]=='b'){ if(D[1][1]<=D[2][3]+D[2][2]-1){ cnt++; s[i]='c'; D[2][2]-=1; vs[i]=true; } } } //cout<<s<<'\n'; cnt=0; for(long i=n-1; i>=0; i--){ if(cnt>=D[1][2]) break; if(t[i]=='a' && !vs[i]){ cnt++; D[2][1]-=1; s[i]='b'; vs[i]=true; } } for(long i=n-1; i>=0; i--){ if(cnt>=D[1][2]) break; if(t[i]=='c' && !vs[i]){ if(D[1][1]<=D[2][2]+D[2][3]-1){ cnt++; s[i]='b'; D[2][3]-=1; vs[i]=true; } } } for(long i=0; i<n; i++) if(!vs[i]) s[i]='a'; cnt=0; k=s; for(long i=0; i<n; i++) vs[i]=false; for(long i=0; i<n; i++){ if(cnt>=D[1][1]) break; if(t[i]=='c'){ if(D[1][2]<=D[3][3]+D[3][1]-1){ cnt++; s[i]='a'; vs[i]=true; D[3][3]-=1; } } if(t[i]=='b'){ if(D[1][3]<=D[3][1]+D[3][2]-1){ cnt++; k[i]='a'; D[3][2]-=1; vs[i]=true; } } } //cout<<s<<'\n'; cnt=0; for(long i=0; i<n; i++){ if(cnt>=D[1][2]) break; if(t[i]=='c' && !vs[i]){ cnt++; D[2][3]-=1; k[i]='b'; vs[i]=true; } if(t[i]=='a' && !vs[i]){ if(D[1][3]<=D[3][1]+D[3][2]-1){ cnt++; k[i]='b'; D[3][1]-=1; vs[i]=true; } } } //cout<<s<<'\n'; for(long i=0; i<n; i++) if(!vs[i]) k[i]='c'; cout<<min(s,k); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...