Submission #91046

#TimeUsernameProblemLanguageResultExecution timeMemory
91046tincamateiXylophone (JOI18_xylophone)C++14
100 / 100
107 ms724 KiB
#include "xylophone.h" const int MAX_N = 5000; int v[1+MAX_N]; int win2[1+MAX_N], win3[1+MAX_N]; void solve(int N) { int semn = 1; int vmin, pmin, vmax, pmax; for(int i = 1; i < N; ++i) win2[i] = query(i, i + 1); for(int i = 2; i < N; ++i) win3[i] = query(i - 1, i + 1); v[1] = 0; v[2] = win2[1]; for(int i = 3; i <= N; ++i) { if(win2[i - 2] + win2[i - 1] != win3[i - 1]) semn = semn * (-1); v[i] = v[i - 1] + semn * win2[i - 1]; } vmin = 1000000000; vmax =-1000000000; pmin = pmax = 0; for(int i = 1; i <= N; ++i) { if(v[i] > vmax) { vmax = v[i]; pmax = i; } if(v[i] < vmin) { vmin = v[i]; pmin = i; } } for(int i = 1; i <= N; ++i) { v[i] = v[i] - vmin + 1; if(pmin > pmax) v[i] = N - v[i] + 1; answer(i, v[i]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...