Submission #101124

#TimeUsernameProblemLanguageResultExecution timeMemory
101124kdh9949Library (JOI18_library)C++17
100 / 100
488 ms632 KiB
#include <cstdio> #include <vector> #include "library.h" using namespace std; const int N = 1005; static int n, chk[N], ans[N]; static vector<int> rep; int ask(vector<int> v){ vector<int> c(n, 0); for(int i : v) c[i - 1] = 1; return Query(c); } int ask(int x, int y){ vector<int> v(n, 0); v[x - 1] = v[y - 1] = 1; return Query(v); } void f(vector<int> cv, vector<int> tv, int cnt){ if(cv.size() == cnt){ for(int i : cv) rep.push_back(i); return; } vector<int> cc(n + 1, 0); vector<int> lv, rv, rrv; for(int i = 0, j = 0; i < cv.size(); i++, j ^= 1){ if(j) lv.push_back(cv[i]); else rv.push_back(cv[i]); cc[cv[i]] = 1; } rrv = rv; for(int i : tv) if(!cc[i]) rv.push_back(i); int la = ask(lv); int ra = ask(rv); if(cnt == 1){ if(la == ra) f(lv, tv, 1); else f(rrv, tv, 1); } else{ if(la > ra) f(lv, tv, 2); else if(la < ra) f(rrv, tv, 2); else{ f(lv, tv, 1); f(rrv, tv, 1); } } } void Solve(int n){ ::n = n; for(int l = 0, r = n - 1; l < r; l++, r--){ rep.clear(); vector<int> v; for(int i = 1; i <= n; i++) if(!chk[i]) v.push_back(i); f(v, v, 2); if(l && ask(ans[l - 1], rep[0]) > 1) swap(rep[0], rep[1]); ans[l] = rep[0]; ans[r] = rep[1]; chk[rep[0]] = chk[rep[1]] = 1; } if(n & 1) for(int i = 1; i <= n; i++) if(!chk[i]) ans[n / 2] = i; Answer(vector<int>(ans, ans + n)); }

Compilation message (stderr)

library.cpp: In function 'void f(std::vector<int>, std::vector<int>, int)':
library.cpp:24:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if(cv.size() == cnt){
     ~~~~~~~~~~^~~~~~
library.cpp:30:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0, j = 0; i < cv.size(); i++, j ^= 1){
                        ~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...