제출 #710007

#제출 시각아이디문제언어결과실행 시간메모리
710007vjudge1Carnival (CEOI14_carnival)C++17
100 / 100
25 ms468 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long
#define ld double
// #define endl "\n"

const int N = 200;

int num[N + 1],occ[N + 1];

int ask(vector<int> curr) {
    cout<<curr.size()<<endl;
    for(auto u : curr) {
        cout<<u<<" ";
    }
    cout<<endl;
    int x;
    cin>>x;
    return x;
}

int pa[N + 1],cnt[N + 1];

int find(int a) {
    if(a == pa[a]) return a;
    return pa[a] = find(pa[a]);
}

void unite(int a,int b) {
    a = find(a);
    b = find(b);
    if(a == b) return;
    if(cnt[a] < cnt[b]) swap(a,b);

    pa[b] = a;
    cnt[a] += cnt[b];
}

int kq[N + 1],comp[N + 1];

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

    // freopen("in.txt","r",stdin);
    // freopen("out.txt","w",stdout);
    // freopen("PLO.inp","r",stdin);
    // freopen("PLO.out","w",stdout);

    int n;
    cin>>n;

    for(int i = 1;i <= n;i++) {
        pa[i] = i;
        cnt[i] = 1;
    }


    for(int i = 1;i <= n;i++) {
        int l = i + 1,r = n + 1,res = -1;

        while(l < r) {
            int mid = (l + r)/2;
            vector<int> asd;

            for(int j = i + 1;j <= mid;j++) {
                asd.push_back(j);
            }

            int lst = ask(asd);
            asd.push_back(i);
            int curr = ask(asd);

            if(curr == lst) {
                r = mid;
                res = mid;
            } else {
                l = mid + 1;
            }
        }
        if(res != -1) {
            unite(i,res);
        }
    }
    int cnt = 0;
    for(int i = 1;i <= n;i++) {
        if(i == pa[i]) {
            cnt++;
            comp[i] = cnt;
        }
    }
    cout<<0<<" ";
    for(int i = 1;i <= n;i++) {
        cout<<comp[find(i)]<<" ";
    }
    exit(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...