Submission #212052

#TimeUsernameProblemLanguageResultExecution timeMemory
212052VietnameseEagleBuilding 4 (JOI20_building4)C++14
100 / 100
419 ms84588 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define forinc(i,a,b) for(int i=a;i<=b;++i) #define fordec(i,a,b) for(int i=a;i>=b;--i) #define fi first #define se second #define pii pair<int,int> const int maxn=5e5+10; int n,a[2*maxn],b[2*maxn]; int L[2*maxn][3],R[2*maxn][3]; vector<char> kq; bool chq(int u,int l,int r) { return u>=l&&u<=r; } main() { //freopen("test.inp","r",stdin); ios_base::sync_with_stdio(false); cin>>n; forinc(i,1,2*n) cin>>a[i]; forinc(i,1,2*n) cin>>b[i]; forinc(i,1,2*n+5) forinc(j,0,1) L[i][j]=INT_MAX; forinc(i,1,2*n+5) forinc(j,0,1) R[i][j]=INT_MIN; L[1][0]=0,L[1][1]=1; R[1][0]=0,R[1][1]=1; forinc(i,2,2*n) forinc(t,0,1) { if(t==0){ if(L[i-1][0]!=INT_MAX&&a[i]>=a[i-1]) L[i][t]=min(L[i][t],L[i-1][0]); if(L[i-1][1]!=INT_MAX&&a[i]>=b[i-1]) L[i][t]=min(L[i][t],L[i-1][1]); if(R[i-1][0]!=INT_MIN&&a[i]>=a[i-1]) R[i][t]=max(R[i][t],R[i-1][0]); if(R[i-1][1]!=INT_MIN&&a[i]>=b[i-1]) R[i][t]=max(R[i][t],R[i-1][1]); } else{ if(L[i-1][0]!=INT_MAX&&b[i]>=a[i-1]) L[i][t]=min(L[i][t],L[i-1][0]+1); if(L[i-1][1]!=INT_MAX&&b[i]>=b[i-1]) L[i][t]=min(L[i][t],L[i-1][1]+1); if(R[i-1][0]!=INT_MIN&&b[i]>=a[i-1]) R[i][t]=max(R[i][t],R[i-1][0]+1); if(R[i-1][1]!=INT_MIN&&b[i]>=b[i-1]) R[i][t]=max(R[i][t],R[i-1][1]+1); } } if(!chq(n,L[2*n][0],R[2*n][0])&&!chq(n,L[2*n][1],R[2*n][1])) return cout<<-1,0; int c=(chq(n,L[2*n][0],R[2*n][0])?0:1); kq.push_back((char)('A'+c)); int cur=(c==0?n:n-1); // cout<<L[5][1]<<" "<<R[5][1]; // return 0; fordec(i,2*n-1,1) { bool ok=0; if(chq(cur,L[i][0],R[i][0])) { int tmp=(c==0?a[i+1]:b[i+1]); if(a[i]<=tmp) { // cout<<i<<" "<<1<<"\n"; kq.push_back('A'); c=0; ok=1; } } if(chq(cur,L[i][1],R[i][1])&&ok==0){ int tmp=(c==0?a[i+1]:b[i+1]); // cout<<i; // return 0; if(b[i]<=tmp) { // cout<<i<<" "<<2<<"\n"; kq.push_back('B'); c=1; cur--; } } } reverse(kq.begin(),kq.end()); for(auto &v:kq) cout<<v; }

Compilation message (stderr)

building4.cpp:18:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...