Submission #1231213

#TimeUsernameProblemLanguageResultExecution timeMemory
1231213neisennCarnival (CEOI14_carnival)C++20
100 / 100
6 ms508 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define eb emplace_back #define ppb pop_back #define fi first #define se second typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<int, int> pii; const char nl = '\n'; int memo[155][155]; void solve(){ auto ask = [&](int l, int r){ if (memo[l][r]) return memo[l][r]; cout << r-l+1 << ' '; for (int i = l; i <= r; i++) cout << i << ' '; cout << endl; int x; cin >> x; memo[l][r] = x; return memo[l][r]; }; int n, cnt = 2; cin >> n; int ans[n+1]; memo[1][1] = 1; ans[1] = 1; for (int i = 2; i <= n; i++){ int l = 1, r = i-1, ret = -1; while (l <= r){ int mid = (l+r)/2; if (ask(mid, i) == ask(mid, i-1)){ ret = mid; l = mid+1; } else r = mid-1; } if (ret == -1) ans[i] = cnt++; else ans[i] = ans[ret]; set<int> cnt; for (int j = i; j >= 1; j--){ cnt.insert(ans[j]); memo[j][i] = cnt.size(); } }; cout << "0 "; for (int i = 1; i <= n; i++){ cout << ans[i] << ' '; } cout << endl; } int main(){ int t = 1; //cin >> t; while (t--){ solve(); } 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...