Submission #247180

#TimeUsernameProblemLanguageResultExecution timeMemory
247180dantoh000Mouse (info1cup19_mouse)C++14
38 / 100
363 ms384 KiB
#include <bits/stdc++.h>
#include "grader.h"
int n;
int Query(vector<int> q){
    int k = query(q);
    if (k == n) exit(0);
    else return k;
}
void solve(int N){
    n = N;
    vector<int> q(N);
    for (int i = 0; i < N; i++){
        q[i] = i+1;
    }
    vector<int> done(N,0);
    for (int i = 0; i < N; i++){
        if (done[i]) continue;
        int cur = Query(q);
        vector<int> C;
        for (int j = i+1; j < N ;j++){
            swap(q[i],q[j]);
            int K = Query(q) - cur;
            if (K == 2){
                done[i] = done[j] = 1;
                break;
            }
            else if (K == -2){
                swap(q[i],q[j]);
                done[i] = done[j] = 1;
                break;
            }
            else if (K == 1){
                C.push_back(j);
            }
            swap(q[i],q[j]);
        }
        if (C.size() == 2){
            swap(q[i],q[C[0]]);
            swap(q[i],q[C[1]]);
            int K = Query(q) - cur;
            if (K == 3){
                done[i] =done[C[0]] = done[C[1]] = 1;
            }
            else if (K == 2){
                done[i] = done[C[0]] = 1;
            }
            else{
                swap(q[i],q[C[1]]);
                swap(q[i],q[C[0]]);
                swap(q[i],q[C[1]]);
                swap(q[i],q[C[0]]);
                done[i] = done[C[1]] = 1;
            }
        }
        done[i] = 1;
    }
    for (int i = 0; i < N; i++) assert(done[i]);
    Query(q);
    return;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...