# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1042070 | 2024-08-02T13:57:10 Z | AbdullahIshfaq | 사육제 (CEOI14_carnival) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; #define ll long long #define MOD 1000000007 ll ask(ll x , ll y){ cout << y - x + 1 << " "; for(int i = x ; i <= y ; i++){ cout << i << " "; } cout << endl; int c; cin >> c; return c; } void solve(){ ll w , f , n , summ = 0; cin >> n; vector<ll> ans(n + 1); ans[1] = 1; set<ll> st; for(int i = 2; i <= n ;i ++){ st.clear(); for(int j = 1 ; j <= i -1;j++){ st.insert(ans[j]); } ll x = ask(1, i); ll siz = st.size(); if(siz != x){ ans[i] = x; continue; } ll l = 1,r= i; while(r - l > 1){ ll mid = (l + r) / 2; st.clear(); for(int j = mid; j<= i - 1;j ++){ st.insert(ans[j]); } x = ask(mid , i); siz = st.size(); if(size_t == x){ l = mid; } else{ r = mid; } } ans[i] = ans[l]; } cout << 0 << " "; for(int i = 1; i<=n ; i++){ cout << ans[i] << " "; } cout << endl; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tests = 1; // cin >> tests; for (int i = 1; i <= tests; i++){ solve(); } return 0; }