제출 #709965

#제출 시각아이디문제언어결과실행 시간메모리
709965vjudge1사육제 (CEOI14_carnival)C++17
100 / 100
14 ms7492 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define fi first #define se second #define pb push_back typedef pair<int, int> ii; typedef pair<ii, int> iii; typedef pair<ii, ii> iiii; const int N = 3e5 + 5; const int mod = 1e9 + 7, oo = 1e18 + 7; int n; int cnt; vector<int> comps[N]; int cal(vector<int> vc){ cout << vc.size() << " "; for(auto it : vc) cout << it << " "; cout << "\n"; int x; cin >> x; return x; } int answer[N]; void process(){ cin >> n; comps[1].pb(1); cnt = 1; for(int i = 2; i <= n; i++){ vector<int> ask; for(int j = 1; j <= i; j++) ask.pb(j); if(cal(ask) > cnt){ cnt++; comps[cnt].pb(i); continue; } int l = 1, r = cnt;// first component that contains this guy while(l < r){ int mid = (l + r) >> 1; ask.clear(); for(int j = 1; j <= mid; j++){ for(auto it : comps[j]) ask.pb(it); } ask.pb(i); if(cal(ask) > mid) l = mid + 1; else r = mid; } comps[l].pb(i); } for(int i = 1; i <= cnt; i++){ for(auto it : comps[i]) answer[it] = i; } cout << 0 << " "; for(int i = 1; i <= n; i++) cout << answer[i] << " "; cout << "\n"; } signed main(){ //ios_base::sync_with_stdio(0); //freopen("KEK.inp", "r", stdin); //freopen("KEK.out", "w", stdout); //cin.tie(0); process(); }
#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...