Submission #521106

#TimeUsernameProblemLanguageResultExecution timeMemory
521106LucaIlieMouse (info1cup19_mouse)C++17
34 / 100
130 ms284 KiB
#include <bits/stdc++.h>
#include "grader.h"

using namespace std;

void solve( int n ) {
    int a, i, j, k;
    vector <int> q, val, poz;

    if ( n == 1 ) {
        query( { 1 } );
        return;
    }

    for ( i = 1; i <= n; i++ ) {
        q.push_back( i );
        val.push_back( -1 );
        poz.push_back( -1 );
    }

    while ( query( q ) < n && query( q ) > 0 )
        random_shuffle( q.begin(), q.end() );
    if ( query( q ) == n )
        return;

    for ( i = 0; i < n; i++ ) {
        for ( j = 0; j < n && val[i] == -1; j++ ) {
            if ( i != j ) {
                swap( q[i], q[j] );
                a = query( q );
                if ( a == 2 ) {
                    val[i] = q[i];
                    val[j] = q[j];
                } else if ( a == 1 ) {
                    k = ((i + 1 < n && i + 1 != j) ? i + 1 : (i + 2 < n && i + 2 != j ? i + 2 : (i - 1 >= 0 && i - 1 != j ? i - 1 : i - 2)));
                    swap( q[i], q[k] );
                    a = query( q );
                    if ( a == 3 ) {
                        val[i] = q[i];
                        val[j] = q[j];
                        val[k] = q[k];
                    } else if ( a == 2 )
                        val[j] = q[j];
                    else if ( a == 1 )
                        val[j] = q[j];
                    else
                        val[i] = q[k];
                    swap( q[i], q[k] );
                }
                swap( q[i], q[j] );
            }
        }
    }

    query( val );
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...