Submission #1319600

#TimeUsernameProblemLanguageResultExecution timeMemory
1319600Ghulam_JunaidSuper Dango Maker (JOI22_dango3)C++20
2 / 100
1638 ms608 KiB
#include <bits/stdc++.h> #include "dango3.h" using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int N = 400 * 25 + 100; bool dead[N], on[N]; int n; int qdec(deque<int> &dq){ vector<int> vec; for (int x : dq) vec.push_back(x); return Query(vec); } void work(vector<int> cur){ deque<int> dq; for (int x : cur) dq.push_back(x); while (dq.size() > n){ int f = dq.front(); dq.pop_front(); if (qdec(dq) == 0) dq.push_back(f); } vector<int> perm; for (int x : dq) perm.push_back(x), dead[x] = 1; Answer(perm); } void Solve(int nn, int m){ n = nn; vector<int> vec; for (int i = 1; i <= n * m; i ++) vec.push_back(i); while (vec.size()){ if (vec.size() == n){ Answer(vec); break; } vector<int> cur = vec; while (1){ shuffle(vec.begin(), vec.end(), rng); cur.clear(); for (int i = 0; i < 2 * n - 1 and i < vec.size(); i ++) cur.push_back(vec[i]); if (Query(cur) == 0) continue; break; } work(cur); vector<int> tmp; for (int i : vec) if (!dead[i]) tmp.push_back(i); vec = tmp; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...