제출 #1266301

#제출 시각아이디문제언어결과실행 시간메모리
1266301nguynSuper Dango Maker (JOI22_dango3)C++20
0 / 100
1014 ms676 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; 
    for (int ite = 1; ite < M; ite++) {
        vector<int> vec;
        for (int i = 1; i <= N * M; i++) {
            if (!vis[i]) vec.pb(i); 
        }
        shuffle(vec.begin(), vec.end(), default_random_engine(seed));
        vector<int> cur;
        cur.pb(vec[0]);  
        vis[vec[0]] = 1; 
        vector<int> ask = vec;
        ask.erase(find(ask.begin(), ask.end(), vec[0])); 
        for (int i = 1; i < vec.size(); i++) {
            ask.erase(find(ask.begin(), ask.end(), vec[i])); 
            int cnt = Query(ask);
            if (cnt != M - 1) ask.pb(vec[i]); 
            else {
                cur.pb(vec[i]); 
                vis[vec[i]] = 1; 
            }
            if (cur.size() == N) break; 
        }
        ans.pb(cur); 
    }
    vector<int> cur; 
    for (int i = 1; i <= N * M; i++) {
        if (vis[i] == 0) cur.pb(i); 
    }
    ans.pb(cur); 
    for (auto vec : ans) {
        // for (auto i : vec) cout << i << ' ';
        // cout << '\n';   
        Answer(vec);
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...