Submission #82998

#TimeUsernameProblemLanguageResultExecution timeMemory
82998VasiljkoXylophone (JOI18_xylophone)C++14
47 / 100
68 ms700 KiB
#include <bits/stdc++.h> using namespace std; void solve(int N); int query(int s, int t); void answer(int i, int a); int a[5000]; bool vis[5000]; void solve(int n) { int diff=n-1; int ind; int val=query(2,n); for(int i=1;i<n;i++){ int val=query(i+1,n); if(val!=diff){ ind=i; break; } } a[ind]=1; a[ind+1]=1+query(ind,ind+1); if(ind>1){ a[ind-1]=1+query(ind-1,ind); vis[a[ind-1]]=true; } vis[a[ind]]=true; vis[a[ind+1]]=true; for(int i=ind+2;i<=n;i++){ int q=query(i-1,i); if(vis[a[i-1]+q]){ a[i]=a[i-1]-q; continue; } if(vis[a[i-1]-q]){ a[i]=a[i-1]+q; continue; } int p=query(i-2,i); int val=a[i-1]+q; if(max(val,max(a[i-1],a[i-2]))-min(val,min(a[i-1],a[i-2]))==p){ a[i]=val; }else{ a[i]=a[i-1]-q; } vis[a[i]]=true; } if(ind>1){ for(int i=ind-2;i>=1;i--){ int q=query(i,i+1); if(vis[a[i+1]+q]){ a[i]=a[i+1]-q; continue; } if(vis[a[i+1]-q]){ a[i]=a[i+1]+q; continue; } int p=query(i,i+2); int val=a[i+1]+q; if(max(val,max(a[i+1],a[i+2]))-min(val,min(a[i+1],a[i+2]))==p){ a[i]=val; }else{ a[i]=a[i+1]-q; } vis[a[i]]=true; } } for(int i=1;i<=n;i++)answer(i,a[i]); }

Compilation message (stderr)

xylophone.cpp: In function 'void solve(int)':
xylophone.cpp:15:9: warning: unused variable 'val' [-Wunused-variable]
     int val=query(2,n);
         ^~~
xylophone.cpp:14:9: warning: 'ind' may be used uninitialized in this function [-Wmaybe-uninitialized]
     int ind;
         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...