Submission #95412

#TimeUsernameProblemLanguageResultExecution timeMemory
95412popovicirobertCarnival (CEOI14_carnival)C++14
100 / 100
12 ms396 KiB
#include <bits/stdc++.h> #define lsb(x) (x & (-x)) #define ll long long #define ull unsigned long long #define ld long double // 217 // 44 using namespace std; const int MAXN = 150; int arr[MAXN + 1]; inline int ask(int l, int r) { cout << r - l + 1 << " "; for(int i = l; i <= r; i++) { cout << i << " "; } cout << "\n"; int ans; cin >> ans; return ans; } bool vis[MAXN + 1]; inline int get(int l, int r) { for(int i = l; i <= r; i++) { vis[arr[i]] = 0; } int ans = 0; for(int i = l; i <= r; i++) { ans += 1 - vis[arr[i]]; vis[arr[i]] = 1; } return ans; } int main() { //ifstream cin("A.in"); //ofstream cout("A.out"); int i, n; ios::sync_with_stdio(false); //cin.tie(0), cout.tie(0); cin >> n; int cnt = 0; int id = 0; for(i = 1; i <= n; i++) { int cur = ask(1, i); if(cur > cnt) { arr[i] = ++id; } else { int res = 0; for(int step = 1 << 8; step; step >>= 1) { if(res + step < i && ask(res + step, i) == get(res + step, i - 1)) { res += step; } } arr[i] = arr[res]; } cnt = cur; } cout << 0 << " "; for(i = 1; i <= n; i++) { cout << arr[i] << " "; } cout << "\n"; //cin.close(); //cout.close(); 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...