Submission #1253612

#TimeUsernameProblemLanguageResultExecution timeMemory
1253612ardaXylophone (JOI18_xylophone)C++20
Compilation error
0 ms0 KiB
#include "xylophone.h" static int A[5000]; int N, q_max = 10000, cnt = 0; int q(int l, int r){ cnt++; if(cnt > q_max){ cout << -1 << endl; return 0; } if(!(1 <= l && l <= r && r <= N){ cout << "-1" << endl; return 0; } return query(l, r); } void solve(int n) { N = n; int l = 1, r = n; while(l != r){ int m = (l + r) / 2; if(m == 1){ break; } int res = query(1, m); if(res == n-1) r = m; else l = m+1; } int ans[n+1], ans2[n+1]; for(int i = 0; i <= n; i++) ans2[i] = -1; ans[l] = 1; ans2[1] = 1; if(l != n) ans[l+1] = query(l, l+1) + 1, ans2[ans[l+1]] = 1; // cout << l << " " << ans[l] << " " << ans[l+1]<<endl; for(int i = l+2; i <= n; i++){ int hmmm = query(i-1,i); if(ans[i-1] + hmmm > n){ ans[i] = ans[i-1] - hmmm; ans2[ans[i-1]-hmmm] = 1; continue; } if(ans[i-1] - hmmm < 2){ ans[i] = ans[i-1] + hmmm; ans2[ans[i-1]+hmmm] = 1; continue; } if(ans2[ans[i-1] + hmmm] != -1){ ans[i] = ans[i-1] - hmmm; ans2[ans[i-1]-hmmm] = 1; continue; } if(ans2[ans[i-1] - hmmm] != -1){ ans[i] = ans[i-1] + hmmm; ans2[ans[i-1]+hmmm] = 1; continue; } int of = query(i-2, i); if(ans[i-2]<ans[i-1]){ if(of == (ans[i-1]-ans[i-2] + hmmm)) ans[i] = ans[i-1] + hmmm, ans2[ans[i-1] + hmmm] = 1; else ans[i] = ans[i-1] - hmmm, ans2[ans[i-1] - hmmm] = 1; } else{ if(of == (ans[i-2]-ans[i-1] + hmmm)) ans[i] = ans[i-1] - hmmm, ans2[ans[i-1] - hmmm] = 1; else ans[i] = ans[i-1] + hmmm, ans2[ans[i-1] + hmmm] = 1; } } if(l != 1) ans[l-1] = query(l-1, l) + 1, ans2[ans[l-1]] = l-1; for(int i = l-2; i > 0; i--){ int hmmm = query(i,i+1); if(ans[i+1] + hmmm > n){ ans[i] = ans[i+1] - hmmm; ans2[ans[i+1]-hmmm] = i; continue; } if(ans[i+1] - hmmm < 2){ ans[i] = ans[i+1] + hmmm; ans2[ans[i+1]+hmmm] = i; continue; } if(ans2[ans[i+1] + hmmm] != -1){ ans[i] = ans[i+1] - hmmm; ans2[ans[i+1]-hmmm] = i; continue; } if(ans2[ans[i+1] - hmmm] != -1){ ans[i] = ans[i+1] + hmmm; ans2[ans[i+1]+hmmm] = i; continue; } int of = query(i, i+2); if(ans[i+2]<ans[i+1]){ if(of == (ans[i+1]-ans[i+2] + hmmm)) ans[i] = ans[i+1] + hmmm, ans2[ans[i+1] + hmmm] = i; else ans[i] = ans[i+1] - hmmm, ans2[ans[i+1] - hmmm] = i; } else{ if(of == (ans[i+2]-ans[i+1] + hmmm)) ans[i] = ans[i+1] - hmmm, ans2[ans[i+1] - hmmm] = i; else ans[i] = ans[i+1] + hmmm, ans2[ans[i+1] + hmmm] = i; } } for(int i = 1; i <= n; i++) answer(i, ans[i]); }

Compilation message (stderr)

xylophone.cpp: In function 'int q(int, int)':
xylophone.cpp:8:17: error: 'cout' was not declared in this scope
    8 |                 cout << -1 << endl;
      |                 ^~~~
xylophone.cpp:8:31: error: 'endl' was not declared in this scope
    8 |                 cout << -1 << endl;
      |                               ^~~~
xylophone.cpp:11:41: error: expected ';' before '{' token
   11 |         if(!(1 <= l && l <= r && r <= N){
      |                                         ^
      |                                         ;
xylophone.cpp:15:9: error: expected primary-expression before 'return'
   15 |         return query(l, r);
      |         ^~~~~~
xylophone.cpp:14:10: error: expected ')' before 'return'
   14 |         }
      |          ^
      |          )
   15 |         return query(l, r);
      |         ~~~~~~
xylophone.cpp:11:11: note: to match this '('
   11 |         if(!(1 <= l && l <= r && r <= N){
      |           ^
xylophone.cpp:16:1: warning: control reaches end of non-void function [-Wreturn-type]
   16 | }
      | ^