Submission #682305

#TimeUsernameProblemLanguageResultExecution timeMemory
682305vjudge1Building 4 (JOI20_building4)C++17
100 / 100
287 ms68928 KiB
#include<bits/stdc++.h> #pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #pragma comment(linker, "/stack:200000000") #pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace std; #define int long long #define ll long long #define pb push_back #define ppb pop_back #define F first #define S second #define all(x) x.begin(),x.end() #define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define freopen(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout); const int N = 1000000 + 5; const int M = 4000 + 5; const ll mod = 1e9 + 7; const ll inf = 1e17; int n, a[N], b[N], mna[N], mxa[N], mnb[N], mxb[N], cnt; string s; void solve(){ cin >> n; n *= 2; for(int i = 1; i <= n; i ++){ cin >> a[i]; } for(int i = 1; i <= n; i++){ cin >> b[i]; } for(int i = 1; i <= n; i++){ mna[i] = inf; mnb[i] = inf; mxa[i] = -inf; mxb[i] = -inf; } for(int i = 1; i <= n; i++){ if(a[i] >= a[i - 1]){ mna[i] = mna[i - 1] + 1; mxa[i] = mxa[i - 1] + 1; } if(a[i] >= b[i - 1]){ mna[i] = min(mna[i], mnb[i - 1] + 1); mxa[i] = max(mxa[i], mxb[i - 1] + 1); } if(b[i] >= a[i - 1]){ mnb[i] = mna[i - 1]; mxb[i] = mxa[i - 1]; } if(b[i] >= b[i - 1]){ mnb[i] = min(mnb[i], mnb[i - 1]); mxb[i] = max(mxb[i], mxb[i - 1]); } } char c = 'C'; cnt = n / 2; if(mna[n] <= cnt && mxa[n] >= cnt){ c = 'A'; cnt--; }else if(mnb[n] <= cnt && mxb[n] >= cnt){ c = 'B'; } if(c == 'C'){ cout << -1; return; } s += c; while(n > 1){ if(c == 'A'){ if(a[n] >= a[n - 1] && mna[n - 1] <= cnt && mxa[n - 1] >= cnt){ c = 'A'; cnt--; }else if(a[n] >= b[n - 1] && mnb[n - 1] <= cnt && mxb[n - 1] >= cnt){ c = 'B'; } }else{ if(b[n] >= a[n - 1] && mna[n - 1] <= cnt && mxa[n - 1] >= cnt){ c = 'A'; cnt--; }else if(b[n] >= b[n - 1] && mnb[n - 1] <= cnt && mxb[n - 1] >= cnt){ c = 'B'; } } s += c; n--; } reverse(all(s)); cout << s; } main() { fast int tt = 1; // cin >> tt; while(tt--){ solve(); } }

Compilation message (stderr)

building4.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    3 | #pragma GCC optimization("O3")
      | 
building4.cpp:4: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    4 | #pragma GCC optimization("unroll-loops")
      | 
building4.cpp:5: warning: ignoring '#pragma comment ' [-Wunknown-pragmas]
    5 | #pragma comment(linker, "/stack:200000000")
      | 
building4.cpp:98:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   98 | main() {
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...