Submission #503227

#TimeUsernameProblemLanguageResultExecution timeMemory
503227MasterTasterXylophone (JOI18_xylophone)C++14
100 / 100
97 ms544 KiB
#include "xylophone.h" #include <bits/stdc++.h> #define pb push_back #define ll long long #define pii pair<int, int> #define xx first #define yy second #define MAXN 5010 using namespace std; static int A[5000]; bool bio[MAXN]; int ress[MAXN], diff[MAXN]; void solve(int n) { for (int i=2; i<=n; i++) diff[i]=query(i-1, i); int l=1, r=n; int kec=-1; while (l<=r) { int mid=l+(r-l)/2; if (query(mid, n)==n-1) { kec=mid; l=mid+1; } else r=mid-1; } ress[kec]=1; bio[1]=true; if (kec!=1) ress[kec-1]=1+diff[kec]; ress[kec+1]=1+diff[kec+1]; bio[ress[kec-1]]=true; bio[ress[kec+1]]=true; for (int i=kec-1; i>1; i--) { if (bio[ress[i]+diff[i]]) ress[i-1]=ress[i]-diff[i]; else if (bio[ress[i]-diff[i]]) ress[i-1]=ress[i]+diff[i]; else if (ress[i]>ress[i+1]) { int sta=query(i-1, i+1); if (sta==(ress[i]-ress[i+1])) { ress[i-1]=ress[i]-diff[i]; } else if (sta==(diff[i]+ress[i]-ress[i+1])) { ress[i-1]=ress[i]+diff[i]; } else { ress[i-1]=ress[i]-diff[i]; } } else { int sta=query(i-1, i+1); if (sta==(ress[i+1]-ress[i])) { ress[i-1]=ress[i]+diff[i]; } else if (sta==(diff[i]+ress[i+1]-ress[i])) { ress[i-1]=ress[i]-diff[i]; } else { ress[i-1]=ress[i]+diff[i]; } } bio[ress[i-1]]=true; } for (int i=kec+1; i<n; i++) { if (bio[ress[i]+diff[i+1]]) ress[i+1]=ress[i]-diff[i+1]; else if (bio[ress[i]-diff[i+1]]) ress[i+1]=ress[i]+diff[i+1]; else if (ress[i]>ress[i-1]) { int sta=query(i-1, i+1); if (sta==(ress[i]-ress[i-1])) { ress[i+1]=ress[i]-diff[i+1]; } else if (sta==(diff[i+1]+ress[i]-ress[i-1])) { ress[i+1]=ress[i]+diff[i+1]; } else { ress[i+1]=ress[i]-diff[i+1]; } } else { int sta=query(i-1, i+1); if (sta==(ress[i-1]-ress[i])) { ress[i+1]=ress[i]+diff[i+1]; } else if (sta==(diff[i+1]+ress[i-1]-ress[i])) { ress[i+1]=ress[i]-diff[i+1]; } else { ress[i+1]=ress[i]+diff[i+1]; } } bio[ress[i+1]]=true; } for (int i=1; i<=n; i++) answer(i, ress[i]); }

Compilation message (stderr)

xylophone.cpp:13:12: warning: 'A' defined but not used [-Wunused-variable]
   13 | static int A[5000];
      |            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...