#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(mid == i) break;
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |