제출 #1149006

#제출 시각아이디문제언어결과실행 시간메모리
1149006LilPlutonJob Scheduling (CEOI12_jobs)C++20
100 / 100
263 ms13596 KiB
#include <bits/stdc++.h>
using namespace std;

#define ld long double
#define ll long long
#define eb emplace_back
const int inf = 1e9;

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n, d, m;
    cin >> n >> d >> m;
    vector<vector<int>>v(n + 1);
    for(int i = 1; i <= m; ++i){
        int x;
        cin >> x;
        v[x].push_back(i);
    }
    int l = 1, r = m;
    while(l < r){
        int mid = (l + r) >> 1;
        queue<array<int,2>>q;
        int f = 1;
        for(int i = 1; i <= n; ++i){
            for(int x : v[i]){
                q.push({x, i});
            }
            int k = mid;
            while (!q.empty() && k--) q.pop();
            if(!q.empty() && q.front()[1] + d == i){
                f = 0;
                break;
            }
        }
        f &= q.empty();
        if(f){
            r = mid;
        }else{
            l = mid + 1;
        }
    }
    cout << l << endl;
    queue<array<int,2>>q;
    for(int i = 1; i <= n; ++i){
        for(int x : v[i]){
            q.push({x, i});
        }
        int k = l;
        while(!q.empty() && k--){
            cout << q.front()[0] << ' ';
            q.pop();
        }
        cout << 0 << endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...