제출 #1364753

#제출 시각아이디문제언어결과실행 시간메모리
1364753waygonz사육제 (CEOI14_carnival)C++20
100 / 100
5 ms436 KiB
#include <bits/stdc++.h>

using namespace std;

const int N = 151;

int par[N];

int ask(vector<int>& a) {
    cout << a.size() << ' ';
    for (auto &x : a) cout << x << ' ';
    cout << endl;
    int t; cin >> t;
    return t;
}

int fp(int x) {
    if (par[x] == -1) return x;
    return par[x] = fp(par[x]);
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    memset(par, -1, sizeof(par));
    int n; cin >> n;
    for (int i = 1; i < n; i++) {
        int l = i+1, r = n;
        vector<int> a;
        for (int j = i+1; j <= n; j++) a.emplace_back(j);
        int ex = ask(a);
        a.emplace_back(i);
        int in = ask(a);
        if (ex != in) continue;
        while (l < r) {
            int mid = (l + r) / 2;
            vector<int> a;
            for (int j = i+1; j <= mid; j++) a.emplace_back(j);
            ex = ask(a);
            a.emplace_back(i);
            in = ask(a);
            if (in == ex) r = mid;
            else l = mid + 1;
        }
        int pu = fp(i), pv = fp(l);
        if (pu != pv) par[pu] = pv;
    }
    map<int, int> mp;
    for (int i = 1; i <= n; i++)
        if (!mp.count(fp(i))) mp[fp(i)] = mp.size() + 1;
    cout << "0 ";
    for (int i = 1; i <= n; i++) cout << mp[fp(i)] << ' ';
    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…