Submission #1257676

#TimeUsernameProblemLanguageResultExecution timeMemory
1257676tolbiSuper Dango Maker (JOI22_dango3)C++20
0 / 100
232 ms10620 KiB
#include "dango3.h" #include <bits/stdc++.h> using namespace std; #define coutarr(x) for (auto &it : x) cout<<it<<" ";cout<<endl; vector<int> concat(vector<int> a, vector<int> b){ vector<int> ret = a; for (auto it : b) ret.push_back(it); for (auto &it : ret) it++; return ret; } void Solve(int N, int M) { swap(N,M); vector<bool> decided(N * M, false); vector<vector<int>> dango(M); for (int i = 0; i < M; i++){ vector<int> cur; for (int j = 0; j < N * M; j++){ if (decided[j]) cur.push_back(j); } vector<int> h; function<void(int,int,int)> solve = [&](int l, int r, int c)->void{ if (c == 0) return; if (r - l + 1 == c){ for (int i = l; i <= r; i++){ decided[h[i]] = true; } return; } int m = l + r >> 1; int left = Query(concat(cur,vector<int>(h.begin()+l,h.begin()+m+1))); solve(l,m,left); solve(m+1,r,c-left); }; for (int j = 0; j < N * M; j++){ if (decided[j]) continue; h.push_back(j); if (h.size() == M){ solve(0,h.size()-1,Query(concat(cur,h))); for (auto it : h){ if (decided[it]) dango[i].push_back(it); else cur.push_back(it); } h.clear(); } } if (h.size() > 0){ solve(0,h.size()-1,Query(concat(cur,h))); for (auto it : h){ if (decided[it]) dango[i].push_back(it); else cur.push_back(it); } h.clear(); } } for (int i = 0; i < N; i++){ vector<int> a; for (int j = 0; j < M; j++){ a.push_back(dango[j][i]+1); } Answer(a); } } //3 3 1 2 1 2
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...