Submission #1314708

#TimeUsernameProblemLanguageResultExecution timeMemory
1314708darsh_sodani007Building 4 (JOI20_building4)C++17
100 / 100
168 ms33768 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' #define pb push_back #define a first #define b second typedef long long llo; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; llo aa[2*n]; for (int i=0;i<2*n;i++){ cin >> aa[i]; } llo bb[2*n]; for (int i=0;i<2*n;i++){ cin >> bb[i]; } pair<int,int> dp[2*n+1][2]; dp[0][0]={0,0}; dp[0][1]={0,0}; dp[1][0]={1,1}; dp[1][1]={0,0}; for (int i=2;i<=2*n;i++){ dp[i][0]={2*n+1,-2*n-1}; dp[i][1]={2*n+1,-2*n-1}; } for (int i=2;i<=2*n;i++){ if (aa[i-1]>=aa[i-2]){ dp[i][0].a=min(dp[i][0].a,dp[i-1][0].a+1); dp[i][0].b=max(dp[i][0].b,dp[i-1][0].b+1); } if (aa[i-1]>=bb[i-2]){ dp[i][0].a=min(dp[i][0].a,dp[i-1][1].a+1); dp[i][0].b=max(dp[i][0].b,dp[i-1][1].b+1); } if (bb[i-1]>=aa[i-2]){ dp[i][1].a=min(dp[i][1].a,dp[i-1][0].a); dp[i][1].b=max(dp[i][1].b,dp[i-1][0].b); } if (bb[i-1]>=bb[i-2]){ dp[i][1].a=min(dp[i][1].a,dp[i-1][1].a); dp[i][1].b=max(dp[i][1].b,dp[i-1][1].b); } } int h=n; llo g=1e18; string v=""; if (n<min(dp[2*n][0].a,dp[2*n][1].a) or n>max(dp[2*n][0].b,dp[2*n][1].b)){ cout<<-1<<endl; } else{ bool pos=true; for (int i=2*n;i>=1;i--){ if (!pos){ break; } if (h>0 and g>=aa[i-1] and h>=dp[i][0].a and h<=dp[i][0].b){ v+='A'; g=aa[i-1]; h--; } else if (g>=bb[i-1] and h>=dp[i][1].a and h<=dp[i][1].b){ v+='B'; g=bb[i-1]; } else{ cout<<-1<<endl; pos=false; break; } } if (pos){ reverse(v.begin(),v.end()); cout<<v<<endl; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...