Submission #1272242

#TimeUsernameProblemLanguageResultExecution timeMemory
1272242warrennXylophone (JOI18_xylophone)C++20
11 / 100
3 ms1400 KiB
#include "xylophone.h" #include<bits/stdc++.h> using namespace std; static int a[5000]; int val[502][502]; bool ganti[502]; int diff[502]; int ans[502]; void solve(int n) { for(int q=2;q<=n;q++){ val[q-1][q]=query(q-1,q); diff[q]=val[q-1][q]; } for(int q=3;q<=n;q++){ val[q-2][q]=query(q-2,q); } for(int q=3;q<=n;q++){ if(val[q-2][q-1]+val[q-1][q]==val[q-2][q]){ } else{ ganti[q]=true; } } // awal ga usah ganti for(int q=3;q<=n;q++){ if(ganti[q]){ if(diff[q-1]>0){ diff[q]=-diff[q]; } } else{ if(diff[q-1]<0){ diff[q]=-diff[q]; } } } int pref[n+1]; pref[1]=0; int mn=0; int idxmn=1; int mx=0; int idxmx=1; for(int q=2;q<=n;q++){ pref[q]=pref[q-1]+diff[q]; if(pref[q]<mn){ mn=pref[q]; idxmn=q; } if(pref[q]>mx){ mx=pref[q]; idxmx=q; } } if(idxmn>idxmx){ swap(idxmn,idxmx); for(int q=2;q<=n;q++){ diff[q]=-diff[q]; } } ans[idxmn]=1; for(int q=idxmn;q>=2;q--){ ans[q-1]=ans[q]-diff[q]; } for(int q=idxmn+1;q<=n;q++){ ans[q]=ans[q-1]+diff[q]; } for(int q=1;q<=n;q++){ answer(q,ans[q]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...