Submission #1053053

#TimeUsernameProblemLanguageResultExecution timeMemory
1053053j_vdd16Super Dango Maker (JOI22_dango3)C++17
22 / 100
1985 ms848 KiB
#include <algorithm> #include <bitset> #include <cstdint> #include <cstring> #include <iostream> #include <limits.h> #include <math.h> #include <map> #include <numeric> #include <queue> #include <set> #include <stack> #include <string> #include <vector> #define loop(X, N) for(int X = 0; X < (N); X++) #define all(V) V.begin(), V.end() #define rall(V) V.rbegin(), V.rend() using namespace std; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<vector<ii>> vvii; typedef vector<bool> vb; typedef vector<vector<bool>> vvb; #include "dango3.h" void Solve(int n, int m) { int colorCount = 1; vi color(n * m); color[0] = 0; vvi byColor(n); byColor[0].push_back(0); for (int i = 1; i < n * m; i++) { vi y; for (int j = i + 1; j < n * m; j++) y.push_back(j + 1); loop(j, colorCount) { for (int k = 1; k < byColor[j].size(); k++) { y.push_back(byColor[j][k] + 1); } } int res; if (colorCount <= n) res = Query(y); else res = 0; if (res == m - 1) { color[i] = colorCount; byColor[colorCount].push_back(i); colorCount++; } else { vi relevantColors, irrelevantColors; loop(j, colorCount) { if (byColor[j].size() < m) { relevantColors.push_back(j); } else { irrelevantColors.push_back(j); } } int l = 0, r = relevantColors.size() - 1; while (l < r) { int middle = (l + r) / 2; vi x; for (int j = i + 1; j < n * m; j++) x.push_back(j + 1); for (int j : irrelevantColors) { for (int idx : byColor[j]) { x.push_back(idx + 1); } } loop(j, relevantColors.size()) { int k = 0; if (l <= j && j <= middle) k++; int curColor = relevantColors[j]; for (; k < byColor[curColor].size(); k++) { x.push_back(byColor[curColor][k] + 1); } } res = Query(x); if (res == m - 1) { l = middle + 1; } else { r = middle; } } int curColor = relevantColors[l]; color[i] = curColor; byColor[curColor].push_back(i); } } loop(i, m) { vi x; loop(j, n) { x.push_back(byColor[j][i] + 1); } Answer(x); } }

Compilation message (stderr)

dango3.cpp: In function 'void Solve(int, int)':
dango3.cpp:45:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |             for (int k = 1; k < byColor[j].size(); k++) {
      |                             ~~^~~~~~~~~~~~~~~~~~~
dango3.cpp:64:39: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   64 |                 if (byColor[j].size() < m) {
      |                     ~~~~~~~~~~~~~~~~~~^~~
dango3.cpp:16:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 | #define loop(X, N) for(int X = 0; X < (N); X++)
      |                                     ^
dango3.cpp:85:17: note: in expansion of macro 'loop'
   85 |                 loop(j, relevantColors.size()) {
      |                 ^~~~
dango3.cpp:90:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   90 |                     for (; k < byColor[curColor].size(); k++) {
      |                            ~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...