Submission #282964

#TimeUsernameProblemLanguageResultExecution timeMemory
282964wildturtleBuilding 4 (JOI20_building4)C++17
100 / 100
1757 ms115820 KiB
#include<bits/stdc++.h> using namespace std; long long a,b,c,d,i,e,f,g,n,m,k,l,wina,darch; long long A[5][1000006],minn[1000006][5],maxx[1000006][5]; string s; int main() { cin>>n; n*=2; for(long long i=1;i<=2;i++) { for(long long j=1;j<=n;j++) { cin>>A[i][j]; minn[j][i]=1000000009; } } //cout<<"*"; minn[1][1]=1; maxx[1][1]=1; minn[1][2]=0; maxx[1][2]=0; for(long long i=1;i<=n;i++) { for(long long j=1;j<=2;j++) { //cout<<i<<" "<<j<<endl; if(A[j][i]>=A[1][i-1]) { //if(j==1 && i==2) cout<<minn[i][j]<<"-"<<minn[i-1][1]<<endl; minn[i][j]=min(minn[i][j],minn[i-1][1]+(j==1 ? 1:0)); maxx[i][j]=max(maxx[i][j],maxx[i-1][1]+(j==1 ? 1:0)); } if(A[j][i]>=A[2][i-1]) { //if(j==1 & i==2) cout<<minn[i][j]<<"-"<<minn[i-1][2]<<endl; minn[i][j]=min(minn[i][j],minn[i-1][2]+(j==1 ? 1:0)); maxx[i][j]=max(maxx[i][j],maxx[i-1][2]+(j==1 ? 1:0)); } } } /*for(long long i=1;i<=n;i++) { for(long long j=1;j<=2;j++) { cout<<"{"<<minn[i][j]<<" "<<maxx[i][j]<<"}"; } cout<<endl; } cout<<"*";*/ darch=n/2; wina=1000000009; for(long long i=n;i>=1;i--) { for(long long j=1;j<=2;j++) { if(A[j][i]<=wina && minn[i][j]<=darch && darch<=maxx[i][j]) { wina=A[j][i]; darch-=(j==1 ? 1:0); s+=(j==1 ? 'A':'B'); k=1; break; } } if(k==0) {cout<<-1; return 0; } } reverse(s.begin(),s.end()); cout<<s; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...