Submission #96719

#TimeUsernameProblemLanguageResultExecution timeMemory
96719Retro3014Library (JOI18_library)C++17
100 / 100
525 ms404 KiB
#include <cstdio> #include <vector> #include <iostream> #include <algorithm> #include <stdio.h> #include "library.h" using namespace std; int q(const vector<int>& M){ for(int i=0; i<M.size(); i++){ if(M[i]!=0){ return Query(M); } }return 0; } void Solve(int N){ vector<int> v(N); vector<int> ans(N); vector<bool> chk(N, 0); vector<int> idx(N); for(int i=0; i<N; i++){ v[i] = true; idx[i] = i; } for(int i=0; i<N; i++){ v[i] = false; int k = q(v); v[i] = true; if(k==1){ ans[0] = i; idx[i] = N; chk[i] = true; break; } } for(int i=1; i<N; i++){ sort(idx.begin(), idx.end()); idx.pop_back(); int s = 0, e = idx.size()-1, m; while(s<e){ m = (s+e)/2; int k1, k2; for(int j=0; j<N; j++){ if(chk[j]){ v[j] = false; }else if(idx[s]<=j && j<=idx[m]){ v[j] = true; }else{ v[j] = false; } } k1 = q(v); for(int j=0; j<N; j++){ if(chk[j]){ v[j] = true; }else if(idx[s]<=j && j<=idx[m]){ v[j] = true; }else{ v[j] = false; } } k2 = q(v); if(k1==k2){ e = m; }else{ s = m+1; } } ans[i] = idx[s]; chk[idx[s]] = true; idx[s] = N; } for(int i=0; i<N; i++){ ans[i]++; // cout<<ans[i]<<' '<<endl; } Answer(ans); return; }

Compilation message (stderr)

library.cpp: In function 'int q(const std::vector<int>&)':
library.cpp:12:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<M.size(); i++){
               ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...