Submission #434361

#TimeUsernameProblemLanguageResultExecution timeMemory
434361kevinxiehkCarnival (CEOI14_carnival)C++17
100 / 100
37 ms328 KiB
#include <bits/stdc++.h>
#define mp make_pair
#define pb emplace_back
#define fi first
#define se second
#define ick cout<<"ickbmi32.9\n"
using namespace std;
int col[155];
int cnt = 1;
int unq(int l, int r) {
    set<int> dk;
    dk.clear();
    for(int i = l; i <= r; i++) dk.insert(col[i]);
    return dk.size();
}
int query(int l, int r, int k) {
    cout << r - l + 2 << ' ';
    for(int i = l; i <= r; i++) cout << i + 1 << ' ';
    cout << k + 1 << endl;
    int a;
    cin >> a;
    return a;
}
int det(int k) {
    int a = query(0, k - 1, k);
    if(a > unq(0, k - 1)) {
        cnt++;
        return cnt;
    }
    int l = 0, r = k - 1; 
    while(l < r) {
        int m = (l + r) / 2;
        cerr << l << ' ' << m << ' ' << r << '\n';
        if(query(l, m, k) <= unq(l, m)) r = m;
        else l = m + 1;
    }
    int t = col[l];
    return t;
}
int main(){
    int n;
    cin >> n;
    col[0] = 1;
    for(int i = 1; i < n; i++) col[i] = det(i);
    cout << "0 ";
    for(int i = 0; i < n; i++) cout << col[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...