# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
219813 | 2020-04-06T12:40:15 Z | MKopchev | Building 4 (JOI20_building4) | C++14 | 6 ms | 416 KB |
#include<bits/stdc++.h> using namespace std; const int nmax=2e3+42; bool been[nmax][nmax][2]; int n; int a[2*nmax],b[2*nmax]; string current; void go(int a_taken,int b_taken,bool side) { if(side==0)current.push_back('A'); else current.push_back('B'); if(been[a_taken][b_taken][side]) { current.pop_back(); return; } been[a_taken][b_taken][side]=1; //cout<<"go "<<a_taken<<" "<<b_taken<<" "<<side<<endl; if(a_taken==n&&b_taken==n) { for(int i=1;i<=2*n;i++)printf("%c",current[i]); printf("\n"); exit(0); } int lst=(side==0?a[a_taken]:b[b_taken]); //use a if(a_taken<n&&a[a_taken+b_taken+1]>=lst)go(a_taken+1,b_taken,0); //use b if(b_taken<n&&b[a_taken+b_taken+1]>=lst)go(a_taken,b_taken+1,1); current.pop_back(); } int main() { scanf("%i",&n); for(int i=1;i<=2*n;i++)scanf("%i",&a[i]); for(int i=1;i<=2*n;i++)scanf("%i",&b[i]); go(0,0,0); printf("-1\n"); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 384 KB | Output is correct |
2 | Correct | 4 ms | 384 KB | Output is correct |
3 | Correct | 5 ms | 384 KB | Output is correct |
4 | Correct | 5 ms | 384 KB | Output is correct |
5 | Correct | 6 ms | 416 KB | Output is correct |
6 | Incorrect | 6 ms | 384 KB | Output isn't correct |
7 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 384 KB | Output is correct |
2 | Correct | 4 ms | 384 KB | Output is correct |
3 | Correct | 5 ms | 384 KB | Output is correct |
4 | Correct | 5 ms | 384 KB | Output is correct |
5 | Correct | 6 ms | 416 KB | Output is correct |
6 | Incorrect | 6 ms | 384 KB | Output isn't correct |
7 | Halted | 0 ms | 0 KB | - |