제출 #1361538

#제출 시각아이디문제언어결과실행 시간메모리
1361538uranhishigMonster-Go (EGOI25_monstergo)C++20
0 / 100
851 ms1114112 KiB
#include <bits/stdc++.h>
using namespace std;
// hmmmm 
int main() {
    int n, k;
    cin >> n >> k;
    
    int d = 1;
    for (int x : {12, 6, 4, 3, 2, 1}) {
        if (12 / x + k >= n) {
            d = x;
            break;
        }
    }
    
    int m = 12 / d + k;
    vector<vector<int>> s(m);
    
    int c = 0;
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < d; j++) {
            s[i].push_back(c % 12);
            c++;
        }
    }
    
    vector<vector<int>> combs;
    vector<int> cur;
    
    function<void(int, int)> gen = [&](int start, int left) {
        if (left == 0) {
            combs.push_back(cur);
            return;
        }
        for (int i = start; i < m; i++) {
            cur.push_back(i);
            gen(i + 1, left - 1);
            cur.pop_back();
        }
    };
    
    gen(0, k);
    
    for (int i = 0; i < min(n, (int)combs.size()); i++) {
        vector<int> a;
        vector<bool> skip(m, false);
        
        for (int idx : combs[i]) {
            skip[idx] = true;
        }
        
        for (int j = 0; j < m; j++) {
            if (skip[j]) continue;
            for (int x : s[j]) {
                a.push_back(x);
            }
        }
        
        if ((int)a.size() > 12) a.resize(12);
        
        for (int j = 0; j < 12; j++) {
            cout << a[j] << " \n"[j == 11];
        }
    }
    
    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…