Submission #211091

#TimeUsernameProblemLanguageResultExecution timeMemory
211091DodgeBallManLibrary (JOI18_library)C++14
0 / 100
572 ms384 KiB
#include <bits/stdc++.h> #include "library.h" using namespace std; int n; /*int Query( vector<int> v ) { for( int x : v ) printf("%d ",x); printf("\n"); int c; scanf("%d",&c); return c; }*/ int ask( vector<int> v ) { vector<int> vec(n); for( int &x : vec ) x = 0; for( int x : v ) vec[x-1] = 1; return Query( vec ); } void eras( vector<int> &v, int i ) { vector<int>::iterator it; for( it = v.begin() ; it != v.end() ; it++ ) if( *it == i ) break; v.erase( it ); } void Solve( int n_ ) { n = n_; vector<int> ans(n); vector<int> left; for( int i = 1 ; i <= n ; i++ ) left.emplace_back( i ); for( int i = 1 ; i <= n ; i++ ) { vector<int> v; for( int j = 1 ; j <= n ; j++ ) if( i != j ) v.emplace_back( j ); if( ask( v ) == 1 ) { ans[0] = i; eras( left, i ); break ; } } /*for( int i = 0 ; i < left.size() ; i++ ) printf("%d ",left[i]); printf("\n");*/ for( int i = 1 ; i < n ; i++ ) { int l = 0, r = left.size() - 1; while( l < r ) { int m = l + r >> 1; vector<int> vv; for( int j = 0 ; j <= m ; j++ ) vv.emplace_back( left[j] ); for( int j = 0 ; j < i ; j++ ) vv.emplace_back( ans[j] ); int a = vv.size() - ask( vv ); eras( vv, ans[i-1] ); int b = vv.size() - ask( vv ); if( a - b == 2 || ( i == 1 && a-b == 1 ) ) r = m; else l = m + 1; } ans[i] = left[l]; eras( left, ans[i] ); //printf("ans[%d] : %d\n",i,ans[i]); } Answer( ans ); //for( int i = 0 ; i < n ; i++ ) printf("%d ",ans[i]); } /*int main() { int nn; scanf("%d",&nn); solve( nn ); }*/

Compilation message (stderr)

library.cpp: In function 'void Solve(int)':
library.cpp:49:23: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
             int m = l + r >> 1;
                     ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...