Submission #1252360

#TimeUsernameProblemLanguageResultExecution timeMemory
1252360rayan_bdCarnival (CEOI14_carnival)C++20
0 / 100
0 ms416 KiB
#include <bits/stdc++.h>
using namespace std;

vector<int> adj[155];
int vis[155], tin = 1;

void dfs(int u){
    vis[u] = tin;  
    for(auto it : adj[u]){
        if(vis[it] == -1){
            dfs(it);
        }
    }
}

int main(){
    int n;
    cin >> n;

    auto ask = [&](int i, int j){
        if(i > j) return -1;
        if(i == j) return 1;
        int res = 0;
        cout << j - i + 1 << " ";
        while(i <= j){
            cout << i++ << " ";
        }
        cout << endl << "\n";
        cin >> res;
        return res;
    };
    
    memset(vis, -1, sizeof(vis));
    
    for(int i = 1; i <= 1; ++i){
        int st = i, en = n, nxt = -1;
        while(st <= en){
            int mid = (st + (en - st) / 2);
            int tp1 = ask(i + 1, mid);
            int tp2 = ask(i, mid);
            if(tp1 == tp2){
                nxt = mid;
                en = mid - 1;
            }else{
                st = mid + 1;
            }
        }
        if(nxt > 0) adj[i].push_back(nxt), adj[nxt].push_back(i);
    }

    for(int i = 1; i <= n; ++i){
        if(vis[i] == -1){
            dfs(i);
            tin += 1;
        }
    }

    cout << "0 ";
    for(int i = 1; i <= n; ++i) cout << vis[i] << " ";

    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...