Submission #1200586

#TimeUsernameProblemLanguageResultExecution timeMemory
1200586PlayVoltzCarnival (CEOI14_carnival)C++20
100 / 100
3 ms468 KiB
#include <cstdio> #include <stdio.h> #include <stdbool.h> #include <iostream> #include <map> #include <vector> #include <climits> #include <stack> #include <string> #include <queue> #include <algorithm> #include <set> #include <unordered_set> #include <unordered_map> #include <cmath> #include <cctype> #include <bitset> #include <iomanip> #include <cstring> #include <numeric> #include <cassert> using namespace std; #define int long long #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second int query(vector<int> vect){ cout<<vect.size()<<" "; for (auto a:vect)cout<<a<<" "; cout<<endl; int res; cin>>res; return res; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k, c; cin>>n; vector<int> temp, vect(1, 1), ans(n+1, 0); for (int i=1; i<=n; ++i)temp.pb(i); k=c=query(temp); while (temp.size()>1){ int a=temp.back(); temp.pop_back(); int res=query(temp); if (res<c)vect.pb(a), c=res; } for (int i=0; i<k; ++i)ans[vect[i]]=i+1; for (int i=1; i<=n; ++i)if (!ans[i]){ int low=-1, high=k; while (low+1<high){ int mid=(low+high)/2; vector<int> temp(1, i); for (int j=low+1; j<=mid; ++j)temp.pb(vect[j]); if (query(temp)!=temp.size())high=mid; else low=mid; } ans[i]=ans[vect[high]]; } for (auto a:ans)cout<<a<<" "; 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...