Submission #1180679

#TimeUsernameProblemLanguageResultExecution timeMemory
1180679Quentolosse사육제 (CEOI14_carnival)C++20
100 / 100
2 ms436 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

vector<int> couleurs;

bool check(int fin, int pos) {
    cout << fin + 1 << " ";

    for (int i = 0; i < fin; i++)
    {
        cout << couleurs[i] +1 << " ";
    }
    cout << pos +1 << endl;

    int ans;
    cin >> ans;

    return (ans == fin + 1);
}

int dicho(int pos) {
    int l = 0; int r = couleurs.size();

    while (r - l > 1) {
        int mid = (l + r) / 2;
        if (check(mid, pos)) {
            l = mid;
        }
        else {
            r = mid;
        }
    }

    return l;
}

signed main() {
    ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0);

    int n;
    cin >> n;

    int nbCoul = 0;
    vector<int> reponse(n, 0);

    for (int i = 0; i < n; i++)
    {
        cout << i+1 << " ";
        for (int j = 0; j < i+1; j++)
        {
            cout << j +1 << " ";
        }
        cout << endl;
        
        int ans;
        cin >> ans;

        if (ans != nbCoul) {
            nbCoul++;
            reponse[i] = nbCoul;
            couleurs.push_back(i);
        }
        else {
            reponse[i] = dicho(i) + 1;
        }
    }
    
    cout << "0 ";
    for (int i = 0; i < n; i++)
    {
        cout << reponse[i] << " ";
    }cout << endl;
    
    return 0;

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