Submission #533981

#TimeUsernameProblemLanguageResultExecution timeMemory
533981michaoXylophone (JOI18_xylophone)C++14
Compilation error
0 ms0 KiB
#include "xylophone.h" using namespace std; const int MAX=5005; int ans[MAX]; bool zajety[MAX]; int n; bool check(int x){ return x>=1 && x<=n && !zajety[x]; } void solve(int N){ n=N; int ip=1,ik=n; while (ip+1<ik){ int mid=(ip+ik)>>1; if (query(1,mid)==n-1)ik=mid; else ip=mid; } int r=ik; ik=r,ip=1; while (ip+1<ik){ int mid=(ip+ik)>>1; if (query(mid,r)==n-1)ip=mid; else ik=mid; } int l=ip; ans[l]=1,ans[r]=n; zajety[1]=true; zajety[n]=true; for (int i=l-1;i>=1;i--){ if (i==l-1){ int probuj=query(i,l)+ans[l]; ans[i]=probuj; zajety[ans[i]]=true; } else{ int q1=query(i,i+1); // poprzedni if (!check(b+q1)){ ans[i]=b-q1; continue; } if (!check(b-q1)){ ans[i]=b+q1; continue; } int q2=query(i,i+2); // przedpoprzedni int a=ans[i+2]; int b=ans[i+1]; if (a<b){ if (check(b+q1) && b+q1==q2+a){ ans[i]=b+q1; } else ans[i]=b-q1; } else{ if (check(b-q1) && b-q1==a-q2){ ans[i]=b-q1; } else ans[i]=b+q1; } } zajety[ans[i]]=true; } for (int i=l+1;i<=r-1;i++){ if (i==l+1){ int probuj=query(l,i)+ans[l]; ans[i]=probuj; zajety[ans[i]]=true; } else{ int q1=query(i-1,i); // poprzedni if (!check(b+q1)){ ans[i]=b-q1; continue; } if (!check(b-q1)){ ans[i]=b+q1; continue; } int q2=query(i-2,i); // przedpoprzedni int a=ans[i-2]; int b=ans[i-1]; if (a<b){ if (check(b+q1) && b+q1==q2+a){ ans[i]=b+q1; } else ans[i]=b-q1; } else{ if (check(b-q1) && b-q1==a-q2){ ans[i]=b-q1; } else ans[i]=b+q1; } } zajety[ans[i]]=true; } for (int i=r+1;i<=n;i++){ if (i==r+1){ int probuj=ans[r]-query(r,i); ans[i]=probuj; zajety[ans[i]]=true; } else{ int a=ans[i-2]; int b=ans[i-1]; int q1=query(i-1,i); // poprzedni if (!check(b+q1)){ ans[i]=b-q1; continue; } if (!check(b-q1)){ ans[i]=b+q1; continue; } int q2=query(i-2,i); // przedpoprzedni if (a<b){ if (check(b+q1) && b+q1==q2+a){ ans[i]=b+q1; } else ans[i]=b-q1; } else{ if (check(b-q1) && b-q1==a-q2){ ans[i]=b-q1; } else ans[i]=b+q1; } } zajety[ans[i]]=true; } for (int i=1;i<=n;i++)answer(i,ans[i]); }

Compilation message (stderr)

xylophone.cpp: In function 'void solve(int)':
xylophone.cpp:39:15: error: 'b' was not declared in this scope
   39 |    if (!check(b+q1)){
      |               ^
xylophone.cpp:43:15: error: 'b' was not declared in this scope
   43 |    if (!check(b-q1)){
      |               ^
xylophone.cpp:75:15: error: 'b' was not declared in this scope
   75 |    if (!check(b+q1)){
      |               ^
xylophone.cpp:79:15: error: 'b' was not declared in this scope
   79 |    if (!check(b-q1)){
      |               ^