Submission #1266336

#TimeUsernameProblemLanguageResultExecution timeMemory
1266336nguynSuper Dango Maker (JOI22_dango3)C++20
100 / 100
1071 ms2052 KiB
#include "dango3.h"
#include <bits/stdc++.h>

#define pb push_back

using namespace std;

namespace {

    int variable_example = 1;

}  // namespace

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); 

int rnd(int l, int r) {
    return uniform_int_distribution<int>(l, r)(rng); 
}

unsigned seed = chrono::steady_clock::now().time_since_epoch().count();

void Solve(int N, int M) {
    vector<int> vis(N * M + 1, 0); 
    vector<vector<int>> ans(M); 
    vector<vector<int>> ask(M); 
    for (int i = 1; i <= N * M; i++) {
        for (int j = 0; j < M; j++) {
            ask[j].pb(i); 
        }
    }
    for (int i = 1; i <= N * M; i++) {
        int l = 0;
        int r = M - 1;
        int x = -1; 
        while(l <= r) {
            int mid = (l + r) / 2; 
            ask[mid].erase(find(ask[mid].begin(), ask[mid].end(), i)); 
            int cnt = Query(ask[mid]); 
            ask[mid].pb(i); 
            if (cnt == M - 1) {
                x = mid; 
                r = mid - 1; 
            }
            else {
                l = mid + 1;
            }
        } 
        ask[x].erase(find(ask[x].begin(), ask[x].end(), i)); 
        ans[x].pb(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...