Submission #1147839

#TimeUsernameProblemLanguageResultExecution timeMemory
1147839NewtonabcXylophone (JOI18_xylophone)C++20
100 / 100
27 ms540 KiB
#include "xylophone.h" #include<bits/stdc++.h> using namespace std; int a[5010],b[5010],arr[5010],mn=INT_MAX,mx=INT_MIN,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=1;i<=N;i++){ if(i!=1) arr[i]=arr[i-1]+(inc[i-1]?a[i-1]:-a[i-1]); if(mn>arr[i]){ mn=arr[i]; mnidx=i; } if(mx<arr[i]){ mx=arr[i]; mxidx=i; } } for(int i=1;i<=N;i++) arr[i]+=(1-mn); 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...