Submission #321618

#TimeUsernameProblemLanguageResultExecution timeMemory
321618LawlietXylophone (JOI18_xylophone)C++17
100 / 100
127 ms632 KiB
#include "xylophone.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 5010; int v[MAXN]; int ans[MAXN], t[MAXN]; int signal(int s) { if( s > 0 ) return 1; return -1; } void solve(int N) { v[1] = query( 1 , 2 ); t[1] = v[1]; for(int i = 2 ; i < N ; i++) { v[i] = query( i , i + 1 ); t[i] = abs( v[i] ); if( v[i - 1] + v[i] == query( i - 1 , i + 1 ) ) t[i] *= signal( t[i - 1] ); else t[i] *= signal( -t[i - 1] ); } int mn = 0; for(int i = 2 ; i <= N ; i++) { ans[i] = ans[i - 1] + t[i - 1]; mn = min( mn , ans[i] ); } for(int i = 1 ; i <= N ; i++) ans[i] += -mn + 1; bool flag = true; int prefixMn = N + 1; for(int i = 1 ; i <= N ; i++) { if( ans[i] == N && prefixMn != 1 ) flag = false; prefixMn = min( prefixMn , ans[i] ); } for(int i = 1 ; i <= N && !flag ; i++) ans[i] = N - ans[i] + 1; for(int i = 1 ; i <= N ; i++) answer( i , ans[i] ); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...