Submission #1230779

#TimeUsernameProblemLanguageResultExecution timeMemory
1230779altern23Carnival (CEOI14_carnival)C++20
0 / 100
2 ms416 KiB
#include <bits/stdc++.h>
using namespace std;
 
#define ll long long
#define pii pair<ll, ll>
#define fi first
#define sec second
#define ld long double

const int MAXN = 150;
const ll INF = 1e18;
const int MOD = 1e9 + 7;

ll dp[MAXN + 5][MAXN + 5], ans[MAXN + 5];
int main(){
	// ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);	
	int tc = 1;	
	// cin >> tc;
	for(;tc--;){
		ll N; cin >> N;
		dp[1][1] = 1;
		ans[1] = 1;
		ll cur = 2;
		
		auto query = [&](ll l, ll r){
			if(dp[l][r]) return dp[l][r];
			vector<ll> v;
			for(int i = l; i <= r; i++) v.push_back(i);
			cout << (int)v.size() << " ";
			for(auto x : v) cout << x << " ";
			cout << endl;
			ll x; cin >> x;
			dp[l][r] = x;
			return x;
		};
		
		for(int i = 2; i <= N; i++){
			ll lf = 1, rg = i, pt = -1;
			for(;lf <= rg;){
				ll mid = (lf + rg) / 2;
				if(query(mid, i) == query(mid, i - 1)){
					pt = mid;
					lf = mid + 1;
				}
				else rg = mid - 1;
			}
			if(pt == -1) ans[i] = cur++;
			else ans[i] = ans[pt];
			
			set<ll> st;
			for(int j = i; j >= 1; --j){
				st.insert(ans[j]);
				dp[j][i] = (int)st.size();
			}
		}
		
		cout << 0 << " ";
		for(int i = 1; i <= N; i++){
			cout << ans[i] << " ";
		}
		cout << endl;		
	}
}

/*

*/
#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...