Submission #560088

#TimeUsernameProblemLanguageResultExecution timeMemory
560088two_sidesSuper Dango Maker (JOI22_dango3)C++17
100 / 100
4091 ms824 KiB
#include "dango3.h"
#include <vector>
#include <iostream>

namespace {
    using namespace std;
}

void Solve(int n, int m) {
    vector<vector<int>> a(m);
    vector<char> v(n * m + 1);
    for (int i = 1; i <= n * m; i++) {
        int lo = 0, hi = m - 1;
        while (lo < hi) {
            int mi = (lo + hi) / 2;
            fill(v.begin(), v.end(), 0);
            for (int j : a[mi])
                v[j] = true;
            v[i] = true;
            vector<int> b;
            for (int j = 1; j <= n * m; j++)
                if (!v[j]) b.push_back(j);
            if (m == Query(b) + 1) hi = mi;
            else lo = mi + 1;

        }
        a[hi].push_back(i);
    }
    for (int i = 0; i < m; i++)
        Answer(a[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...