Submission #1213811

#TimeUsernameProblemLanguageResultExecution timeMemory
1213811dostsSuper Dango Maker (JOI22_dango3)C++20
100 / 100
1172 ms752 KiB
#include "dango3.h"
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
//#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define sp << " " <<
#define all(x) x.begin(),x.end()
#define big(x) ((int)(x.size()))
using namespace std;
const int MOD = 1e9+7, LIM = 1e6+1, inf = 2e9;

void Solve(int N, int M) {
    vector<vi> sisler(M+1);
    vi rem;
    for (int i=1;i<=N*M;i++) rem.push_back(i);
    for (int i=1;i<=N*M;i++) {
        int x = rem.back();
        rem.pop_back();
        int l = 1;
        int r = M;
        while (l <= r) {
            int m = (l+r) >> 1;
            vi toask;
            for (auto it : rem) toask.push_back(it);
            for (int j = 1;j<=M;j++) {
                if (j == m) {
                    continue;
                }
                for (auto it : sisler[j]) toask.push_back(it);
            }
            if (Query(toask) == M-1) r = m-1;
            else l = m+1;
        }
        assert(l >= 1 && l <= M);
        sisler[l].push_back(x);
    }
    for (int i=1;i<=M;i++) {
        assert(sisler[i].size() == N);
        sort(all(sisler[i]));
        Answer(sisler[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...