| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 1188260 | pxsit | Carnival (CEOI14_carnival) | C++20 | 0 ms | 0 KiB | 
#include <bits/stdc++.h>
using namespace std;
int main(){ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);static char stdinbuf[1<<20];std::setvbuf(stdin,stdinbuf,_IOFBF,sizeof(stdinbuf));static char stdoutbuf[1<<20];std::setvbuf(stdout,stdoutbuf,_IOFBF,sizeof(stdoutbuf));
    int n;
    cin >> n;
    vector<vector<int>> a;
    a.emplace_back(1);
    vector<vector<int>> a;
    a.push_back({1});
    for (int i = 2; i <= n; i++){
        int l = 0, r = int(a.size()) - 1, ans = -1;
        while (l <= r){
            int mid = (l + r) / 2;
            cout << mid + 2 << " " << i << " ";
            for (int j = 0; j <= mid; j++)
                cout << a[j][0] << " ";
            cout << endl;
            int x;
            cin >> x;
            if (x == mid + 2)
                l = mid + 1;
            else{
                ans = mid;
                r = mid - 1;
            }
        }
        if (ans == -1)
            a.push_back({i});
        else
            a[ans].push_back(i);
    }
    vector<int> ans(n + 1);
    int id = 1;
    for (auto v : a){
        for (int j : v)
            ans[j] = id;
        id++;
    }
    cout << "0 ";
    for (int i = 1; i <= n; i++)
        cout << ans[i] << " ";
}
