Submission #239581

#TimeUsernameProblemLanguageResultExecution timeMemory
239581ctziapoXylophone (JOI18_xylophone)C++14
11 / 100
14 ms384 KiB
#include "xylophone.h" #include<cmath> #include<map> static int A[5000]; using namespace std; void solve(int N) { int n=N; int value = query(1, N); int pf; // cout<<" find first "<<endl; for(int i=1;i<=n;i++){ int t=query(i,N); if(t!=n-1){ pf=i-1; break; } } int f[n+2]={}; //cout<<pf<<endl; answer(pf,1); f[1]=1; // cout<<"os edo"<<endl; int a[n+3]={}; a[pf]=1; if(pf!=1){ a[pf-1] = query(pf-1,pf)+1; answer(pf-1,a[pf-1]); f[a[pf-1]]=1; } if(pf!=N){ a[pf+1] = query(pf,pf+1)+1; answer(pf+1,a[pf+1]); f[a[pf+1]]=1; } // cout<<"my answer "<<endl; //for(int i = 1; i <= N; i++) { // cout<<a[i]<<" "; //} int s=pf+2; while(s<=n){ int t=query(s-1,s); if(f[a[s-1]+t]==1){ a[s]=a[s-1]-t; answer(s,a[s]); f[a[s]]=1; s++; continue; } if(f[a[s-1]-t]==1){ a[s]=a[s-1]+t; answer(s,a[s]); f[a[s]]=1; s++; continue; } int t2=query(s-2,s); if(abs(a[s-1]-a[s-2])==t2){ if(a[s-1] > a[s-2]){ a[s]=a[s-1]-t; answer(s,a[s]); } else{ a[s]=a[s-1]+t; answer(s,a[s]); } } else { if(a[s-1] > a[s-2]){ if(a[s-1]-a[s-2] + t == t2){ a[s]=a[s-1]+t; answer(s,a[s]); } else { a[s]=a[s-1]-t; answer(s,a[s]); } } else{ if(a[s-2]-a[s-1] + t == t2){ a[s]=a[s-1]-t; answer(s,a[s]); } else { a[s]=a[s-1]+t; answer(s,a[s]); } } } // cout<<"my answer "<<endl; //for(int i = 1; i <= N; i++) { // cout<<a[i]<<" "; //} s++; } s=pf-2; while(s>=1){ int t=query(s,s+1); int t2=query(s,s+2); if(abs(a[s+1]-a[s+2])==t2){ if(a[s+1] > a[s+2]){ a[s]=a[s+1]-t; answer(s,a[s]); } else{ a[s]=a[s+1]+t; answer(s,a[s]); } } else { if(a[s+1] > a[s+2]){ if(a[s+1]-a[s+2] + t == t2){ a[s]=a[s+1]+t; answer(s,a[s]); } else { a[s]=a[s+1]-t; answer(s,a[s]); } } else{ if(a[s+2]-a[s+1] + t == t2){ a[s]=a[s+1]-t; answer(s,a[s]); } else { a[s]=a[s+1]+t; answer(s,a[s]); } } } // cout<<"my answer "<<endl; // for(int i = 1; i <= N; i++) { // cout<<a[i]<<" "; // } s--; } // cout<<"my answer "<<endl; //for(int i = 1; i <= N; i++) { // cout<<a[i]<<" "; //} }

Compilation message (stderr)

xylophone.cpp: In function 'void solve(int)':
xylophone.cpp:10:6: warning: unused variable 'value' [-Wunused-variable]
  int value = query(1, N);
      ^~~~~
xylophone.cpp: At global scope:
xylophone.cpp:4:12: warning: 'A' defined but not used [-Wunused-variable]
 static int A[5000];
            ^
xylophone.cpp: In function 'void solve(int)':
xylophone.cpp:34:5: warning: 'pf' may be used uninitialized in this function [-Wmaybe-uninitialized]
     if(pf!=N){
     ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...