Submission #1147792

#TimeUsernameProblemLanguageResultExecution timeMemory
1147792NewtonabcXylophone (JOI18_xylophone)C++20
0 / 100
1 ms428 KiB
#include "xylophone.h" #include<bits/stdc++.h> using namespace std; int a[5010],b[5010],arr[5010],mnidx,mxidx; bool dif[5010],inc[5010]; //a[i]=query(i,i+1) b[i]=query(i,i+2) //dif[i]=relation (i,i+1), relation (i+1,i+2) different? //inc[i]=relation (i,i+1) increase? void solve(int N) { for(int i=1;i<=N-1;i++) a[i]=query(i,i+1); for(int i=1;i<=N-2;i++) b[i]=query(i,i+2); for(int i=1;i<=N-2;i++) if(a[i]+a[i+1]!=b[i]) dif[i]=true; for(int i=2;i<=N-1;i++) inc[i]=inc[i-1]^dif[i-1]; arr[1]=1; for(int i=2;i<=N;i++) arr[i]=arr[i-1]+(inc[i]?a[i-1]:-a[i-1]); mnidx=min_element(arr+1,arr+N+1)-arr,mxidx=max_element(arr,arr+N+1)-arr; for(int i=1;i<=N;i++) arr[i]+=(1-arr[mnidx]); if(mnidx>mxidx) for(int i=1;i<=N;i++) arr[i]=(N+1)-arr[i]; for(int i=1;i<=N;i++) answer(i,arr[i]); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...