Submission #1212553

#TimeUsernameProblemLanguageResultExecution timeMemory
1212553dima2101Super Dango Maker (JOI22_dango3)C++20
22 / 100
10091 ms1120 KiB
#include <bits/stdc++.h>
#include "dango3.h"

int GetMax(const std::vector<int> &x, int n, int m)
{
    std::set<int> s;
    for (int i = 1; i <= n * m; i++)
    {
        s.insert(i);
    }
    for (int j : x)
    {
        s.erase(j);
    }
    std::vector<int> now;
    for (int j : s)
    {
        now.push_back(j);
    }
    return m - Query(now);
}

void Solve(int n, int m)
{
    std::vector<std::vector<int>> ans(m);

    for (int i = 1; i <= n * m; i++)
    {
        int l = -1, r = m;
        while (l + 1 < r)
        {
            int mid = (l + r) / 2;
            ans[mid].push_back(i);
            if (GetMax(ans[mid], n, m) == 2)
            {
                l = mid;
            }
            else
            {
                r = mid;
            }
            ans[mid].pop_back();
        }
        // assert(r != m);
        ans[r].push_back(i);
    }
    for (int i = 0; i < m; i++)
    {
        Answer(ans[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...