Submission #139741

#TimeUsernameProblemLanguageResultExecution timeMemory
139741rzbtXylophone (JOI18_xylophone)C++14
0 / 100
5 ms376 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O3") #include "xylophone.h" using namespace std; #define MAXN 5003 int niz[MAXN]; bool znak[MAXN]; int delta[MAXN]; void solve(int n) { niz[1]=1; delta[2]=query(1,2); niz[2]=1+delta[2]; for(int i=3;i<=n;i++){ int x=query(i-2,i); delta[i]=query(i-1,i); int y=delta[i]; if(x==abs(niz[i-1]-niz[i-2])){ if(niz[i-2]<niz[i-1])niz[i]=niz[i-1]-y; else{ niz[i]=niz[i-1]+y; znak[i]=true; } }else{ if(niz[i-2]<niz[i-1]){ if(x==y+abs(niz[i-1]-niz[i-2])){ niz[i]=niz[i-1]+y; znak[i]=true; } else niz[i]=niz[i-1]-y; }else{ if(x==y+abs(niz[i-1]-niz[i-2]))niz[i]=niz[i-1]-y; else { niz[i]=niz[i-1]+y; znak[i]=true; } } } } int mi=1; for(int i=1;i<=n;i++) if(niz[i]<niz[mi]) mi=i; int ma=1; for(int i=1;i<=n;i++) if(niz[i]>niz[ma]) ma=i; if(ma<mi){ for(int i=2;i<=n;i++){ if(znak[i])niz[i]=niz[i-1]-delta[i]; else niz[i]=niz[i-1]+delta[i]; } } mi=1; for(int i=1;i<=n;i++) mi=min(mi,niz[i]); for(int i=1;i<=n;i++)answer(i,niz[i]-mi+1); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...