Submission #1319577

#TimeUsernameProblemLanguageResultExecution timeMemory
1319577Ghulam_JunaidSuper Dango Maker (JOI22_dango3)C++20
22 / 100
227 ms640 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, on[x] = 0; 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); shuffle(vec.begin(), vec.end(), rng); vector<int> cur; for (int i = 0; i < vec.size(); i ++){ cur.push_back(vec[i]); if (cur.size() < 2 * n - 1 and i + 1 < vec.size()) continue; if (Query(cur) == 0) continue; for (int j : cur) on[j] = 1; work(cur); vector<int> tmp = cur; cur.clear(); for (int j : tmp) if (on[j]) cur.push_back(j), on[j] = 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...