Submission #264799

#TimeUsernameProblemLanguageResultExecution timeMemory
264799GoolakhBuilding 4 (JOI20_building4)C++17
100 / 100
448 ms45744 KiB
// FUCKED UP FUCKED UP FUCKED UP FUCKED UP FUCKED UP #include <bits/stdc++.h> using namespace std; #pragma GCC optimize("O2") #define F first #define S second #define pb push_back #define SZ(x) (ll)(x.size()) #define all(x) x.begin(),x.end() #define MP make_pair typedef int ll; typedef long double ld; typedef pair<ll,ll> pll; //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const ll maxn=1e6+10, maxm=1e6+10, lg=10, mod=1e9+7, inf=1e18; ll n,a[2][maxn],mn[maxn][2],mx[maxn][2]; int main(){ //ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0); for(int i=0;i<maxn;i++) mn[i][0]=mn[i][1]=mod, mx[i][0]=mx[i][1]=-mod; scanf("%d",&n); n*=2; for(int b=0;b<2;b++)for(int i=1;i<=n;i++) scanf("%d",&a[b][i]); mn[1][0]=mx[1][0]=0; mn[1][1]=mx[1][1]=1; for(int i=2;i<=n;i++)for(int b=0;b<2;b++)for(int bb=0;bb<2;bb++)if(a[b][i]>=a[bb][i-1]){ mn[i][b]=min(mn[i][b],mn[i-1][bb]+b); mx[i][b]=max(mx[i][b],mx[i-1][bb]+b); } ll bb=n/2,gg=mod; string ans=""; for(int i=n;i>=1;i--){ bool F=0; for(int b=0;b<2;b++){ if(a[b][i]<=gg && mn[i][b]<=bb && bb<=mx[i][b]){ bb-=b; ans+=(b ? 'B':'A'); gg=a[b][i]; F=1; break; } } if(!F) return cout<<-1,0; } reverse(all(ans)); cout<<ans; return 0; } // a denial a denial a denial a denial a denial a denial

Compilation message (stderr)

building4.cpp:20:58: warning: overflow in conversion from 'double' to 'll' {aka 'int'} changes value from '1.0e+18' to '2147483647' [-Woverflow]
   20 | const ll maxn=1e6+10, maxm=1e6+10, lg=10, mod=1e9+7, inf=1e18;
      |                                                          ^~~~
building4.cpp: In function 'int main()':
building4.cpp:28:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   28 |  scanf("%d",&n); n*=2;
      |  ~~~~~^~~~~~~~~
building4.cpp:29:49: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   29 |  for(int b=0;b<2;b++)for(int i=1;i<=n;i++) scanf("%d",&a[b][i]);
      |                                            ~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...