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...