Submission #1089588

#TimeUsernameProblemLanguageResultExecution timeMemory
1089588_8_8_Super Dango Maker (JOI22_dango3)C++17
22 / 100
636 ms916 KiB
#include "dango3.h" #include <bits/stdc++.h> #include <vector> using namespace std; int n, m; const int N = 401; bool bad[N * 26]; vector<int> get(vector<int> &a, vector<int> &b) { for(int j:a) { bad[j] = 0; } int lst = 0; vector<int> ret; for(int i = 0; i < m; i++) { int l = lst - 1, r = (int)a.size() - 1; int left = m - i; // cout << left << ' ' << lst << ' ' << (int)a.size() - lst + 1 << '\n'; if(left == (int)a.size() - lst) { for(int j = lst; j < (int)a.size(); j++) { ret.push_back(a[j]); } break; } while(r - l > 1) { int mid = (l + r) >> 1; vector<int> t = b; for(int j = 0; j <= mid; j++) { if(!bad[a[j]])t.push_back(a[j]); } if(Query(t)) { r = mid; } else { l = mid; } } lst = r + 1; // cout << a[r] << ' ' << lst << '\n'; ret.push_back(a[r]); bad[a[r]] = 1; } return ret; } vector<int> res[N]; int timer = 0, vis[N * 26]; void Solve(int _n, int _m) { n = _n, m = _m; vector<int> f, bf; for(int i = 1; i <= n * m; i++) { f.push_back(i); } for(int i = 0; i < n; i++) { timer++; vector<int> nv = get(f, bf); bf.push_back(nv[0]); for(int j = 0; j < m; j++) { // cout << nv[j] << ' '; res[j].push_back(nv[j]); vis[nv[j]] = timer; } // cout << '\n'; vector<int> sw; for(int j:f) { if(vis[j] != timer) { sw.push_back(j); } } f = sw; } for(int i = 0; i < m; i++) { Answer(res[i]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...