Submission #199202

#TimeUsernameProblemLanguageResultExecution timeMemory
199202xiaowuc1Carnival (CEOI14_carnival)C++17
100 / 100
31 ms380 KiB
#include <algorithm> #include <bitset> #include <cassert> #include <chrono> #include <cstring> #include <iomanip> #include <iostream> #include <map> #include <queue> #include <random> #include <set> #include <stack> #include <vector> using namespace std; // BEGIN NO SAD #define rep(i, a, b) for(int i = a; i < (b); ++i) #define trav(a, x) for(auto& a : x) #define all(x) x.begin(), x.end() #define sz(x) (int)(x).size() typedef vector<int> vi; // END NO SAD typedef long long ll; typedef pair<int, int> pii; int ret[155]; int n; bool match(int a, int b) { cout << 2 << " " << a << " " << b << endl; int t; cin >> t; return t == 1; } int qry(int lhs, int rhs) { cout << rhs-lhs+1; for(int i = lhs; i <= rhs; i++) cout << " " << i; cout << endl; int t; cin >> t; return t; } void solve() { cin >> n; int k = qry(1, n); memset(ret, 1, sizeof(ret)); int last = k; for(int i = n-1; i >= 1; i--) { int a = qry(1, i); if(a != last) { ret[i+1] = last--; assert(a == last); } } ret[1] = 1; for(int i = n; i >= 1; i--) { if(ret[i] <= k) continue; for(int j = i-1; j >= 1; j--) { if(ret[j] > k) continue; if(match(i, j)) { ret[i] = ret[j]; break; } } assert(ret[i] <= k); } // done - print the answer cout << 0; for(int i = 1; i <= n; i++) cout << " " << ret[i]; cout << endl; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); solve(); }
#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...