Submission #447291

#TimeUsernameProblemLanguageResultExecution timeMemory
447291LucaIlieLibrary (JOI18_library)C++17
100 / 100
352 ms412 KiB
#include <vector> #include <stdio.h> #include <library.h> using namespace std; int n; vector<int> v, tak, res; /*int Query( vector<int> m ) { int ans, i; for ( i = 0; i < n; i++ ) { if ( m[i] == 1 ) printf( "%d ", i + 1 ); } printf( "\n" ); scanf( "%d", &ans ); return ans; } void Answer( vector<int> m ) { int i; for ( i = 0; i < n; i++ ) printf( "%d ", m[i] ); }*/ void Solve( int n ) { int ans, p, st, dr, mij, i, j; if ( n == 1 ) res.push_back( 1 ); else { for ( i = 0; i < n; i++ ) v.push_back( i ); for ( i = 0; i < n; i++ ) tak.push_back( 1 ); ans = 2; i = 0; while ( ans == 2 ) { tak[v[i]] = 0; ans = Query( tak ); tak[v[i]] = 1; i++; } res.push_back( v[i - 1] + 1 ); p = i - 1; for ( i = 1; i < n; i++ ) { for ( j = p; j < n - (i - 1); j++ ) v[j] = v[j + 1]; st = 0; dr = n - i; while ( dr - st > 1 ) { mij = (st + dr) / 2; for ( j = 0; j < n; j++ ) tak[j] = 0; for ( j = st; j < mij; j++ ) tak[v[j]] = 1; ans = Query( tak ); tak[res[i - 1] - 1] = 1; if ( Query( tak ) == ans ) dr = mij; else st = mij; } res.push_back( v[st] + 1 ); p = st; } } Answer( res ); } /*int main() { scanf( "%d", &n ); Solve( n ); return 0; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...