Submission #156598

#TimeUsernameProblemLanguageResultExecution timeMemory
156598Linca_RobertCarnival (CEOI14_carnival)C++14
100 / 100
32 ms504 KiB
#include<bits/stdc++.h> using namespace std; int N, C, ans[256], f[256], cnt; vector<int> qry; inline void get_cul( int pos ){ qry.clear(); for( int i = 1; i <= cnt; i++ ) qry.push_back( i ); random_shuffle( qry.begin(), qry.end() ); bool ok = false; while( ok == false && qry.size() != 1 ){ int p = rand() % ( (int)(qry.size()) ); cout << "2 " << f[ qry[p] ] << " " << pos << endl; int x; cin >> x; if( x == 1 ){ ans[pos] = qry[p]; ok = true; }else{ if( p != (int)(qry.size() - 1) ) swap( qry[p], qry[ qry.size() - 1 ] ); qry.pop_back(); } } if( ok == false ) ans[pos] = qry[0]; return ; } inline int get_ans( void ){ cout << (int)(qry.size()) << " "; for( int i = 0; i < qry.size(); i++ ) cout << qry[i] << " "; cout << endl; int x; cin >> x; return x; } int main(){ srand( time(0) ); cin >> N; for( int i = 1; i <= N; i++ ) qry.push_back( i ); C = get_ans(); f[1] = 1; cnt = 1; ans[1] = 1; for( int i = 2; i <= N; i++ ){ if( cnt < C ){ qry.clear(); for( int j = 1; j <= i; j++ ) qry.push_back( j ); int x = get_ans(); if( x == cnt + 1 ) cnt++, f[cnt] = i, ans[i] = cnt; else get_cul( i ); }else get_cul( i ); } cout << "0 "; for( int i = 1; i <= N; i++ ) cout << ans[i] << " "; return 0; }

Compilation message (stderr)

carnival.cpp: In function 'int get_ans()':
carnival.cpp:33:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for( int i = 0; i < qry.size(); i++ )
                     ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...