Submission #884155

#TimeUsernameProblemLanguageResultExecution timeMemory
884155LucaIlieSuper Dango Maker (JOI22_dango3)C++17
100 / 100
957 ms1144 KiB
#include "dango3.h" #include <bits/stdc++.h> using namespace std; const int MAX_N = 400; const int MAX_M = 25; int pos[MAX_N * MAX_M + 1]; vector<int> v; vector<vector<int>> sticks; void insert( int x ) { pos[x] = v.size(); v.push_back( x ); } void erase( int x ) { swap( v[pos[x]], v[v.size() - 1] ); pos[v[pos[x]]] = pos[x]; pos[x] = 0; v.pop_back(); } int query( vector<int> q ) { for ( int x: q ) erase( x ); /*printf( "q " ); for ( int x: q ) printf( "%d ", x ); printf( "\n" );*/ int ans = Query( v ); for ( int x: q ) insert( x ); return ans; } void Solve( int n, int m ) { for ( int i = 1; i <= n * m; i++ ) { pos[i] = i - 1; v.push_back( i ); } for ( int i = 1; i <= n * m; i++ ) { int l = -1, r = sticks.size(); while ( r - l > 1 ) { int mid = (l + r) / 2; vector<int> q; q.push_back( i ); for ( int x: sticks[mid] ) q.push_back( x ); if ( query( q ) == m - 1 ) r = mid; else l = mid; } if ( r == sticks.size() ) { vector<int> aux; sticks.push_back( aux ); } sticks[r].push_back( i ); } for ( int i = 0; i < m; i++ ) Answer( sticks[i] ); }

Compilation message (stderr)

dango3.cpp: In function 'void Solve(int, int)':
dango3.cpp:63:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |         if ( r == sticks.size() ) {
      |              ~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...