Submission #1220136

#TimeUsernameProblemLanguageResultExecution timeMemory
1220136giorgi123glm사육제 (CEOI14_carnival)C++17
100 / 100
3 ms412 KiB
#include <climits>
#include <deque>
#include <functional>
#include <iostream>
#include <iterator>
#include <set>
using namespace std;

#define int long long

signed main () {
    int N = 0;
    cin >> N;

    int free = 1;
    vector <int> ans (N + 1);
    vector <int> v;

    for (int i = 1; i <= N; i++) {
        cout << v.size() + 1 << ' ';
        for (int& e : v)
            cout << e << ' ';
        cout << i << '\n';
        cout.flush();

        int res = 0;
        cin >> res;

        if (res == v.size() + 1) {
            v.emplace_back (i);
            ans[i] = free++;
        } else if (res == v.size()) {
            int L = 0, R = v.size() - 1;
            int binans =0;
            while (L <= R) {
                int mid = (L + R) / 2;

                cout << mid + 1 + 1 << '\n';
                for (int j = 0; j <= mid; j++)
                    cout << v[j] << ' ';
                cout << i << '\n';
                cout.flush();

                int res1 = 0;
                cin >> res1;

                if (res1 == mid + 1 + 1) {
                    L = mid + 1;
                } else if (res1 == mid + 1) {
                    R = mid - 1;
                    binans = mid;
                }
            }

            ans[i] = ans[v[binans]];
        } else
            exit (1);
    }

    cout << 0 << ' ';
    for (int i = 1; i <= N; i++)
        cout << ans[i] << ' ';
    cout.flush();
}
#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...