제출 #1212556

#제출 시각아이디문제언어결과실행 시간메모리
1212556dima2101Super Dango Maker (JOI22_dango3)C++20
100 / 100
1745 ms712 KiB
#include <bits/stdc++.h>
#include "dango3.h"

int GetMax(const std::vector<int> &x, int n, int m)
{

    std::vector<bool> used(n * m + 1, false);
    for (int i : x)
    {
        used[i] = true;
    }
    std::vector<int> now;
    for (int i = 0; i < n * m; i++)
    {
        if (!used[i + 1])
        {
            now.push_back(i + 1);
        }
    }
    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...