Submission #1252358

#TimeUsernameProblemLanguageResultExecution timeMemory
1252358rayan_bdCarnival (CEOI14_carnival)C++20
0 / 100
0 ms412 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(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 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...