제출 #886803

#제출 시각아이디문제언어결과실행 시간메모리
886803boxSuper Dango Maker (JOI22_dango3)C++17
100 / 100
133 ms860 KiB
#include <bits/stdc++.h>
using namespace std;

#define sz(v) int(std::size(v))

#include "dango3.h"

vector<int> operator+(vector<int> one, const vector<int> two) {
    one.insert(end(one), begin(two), end(two));
    return one;
}

void Solve(int n, int m) {
    vector<int> v(n * m);
    iota(begin(v), end(v), 1);
    mt19937 rng(1234);
    for (int rep = 0; rep < m; rep++) {
        for (int i = 0; i < sz(v); i++) swap(v[i], v[rng() % (i + 1)]);
        int low = n, hi = sz(v);
        while (low < hi) {
            int mid = (low + hi) / 2;
            if (Query(vector(begin(v), begin(v) + mid))) hi = mid;
            else low = mid + 1;
        }
        vector<int> one, two;
        for (int i = low - 1; i >= 0; i--) {
            if (Query(vector(begin(v), begin(v) + i) + one)) two.push_back(v[i]);
            else one.push_back(v[i]);
        }
        Answer(one);
        v = two + vector(begin(v) + low, end(v));
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...