Submission #83817

#TimeUsernameProblemLanguageResultExecution timeMemory
83817mra2322001Job Scheduling (CEOI12_jobs)C++14
0 / 100
255 ms21308 KiB
#include <bits/stdc++.h>
#define f0(i, n) for(int i(0); i < (n); i++)
#define f1(i, n) for(int i(1); i <= n; i++)

using namespace std;
typedef long long ll;
const int N = 100002;

int n, d, m;
pair <int, int> a[N];
vector <vector <int> > v, b;

bool check(int x){
    f1(i, n) v[i].clear();
    int ma = n - d, cur = 0;
    f1(i, m){
        cur++;
        if(cur <= x){
            v[ma].emplace_back(a[i].second);
        }
        else{
            cur = 1;
            ma--;
            if(ma==0) return 0;
            v[ma].emplace_back(a[i].second);
        }
    }
    return 1;
}

int main(){
    ios_base::sync_with_stdio(0);

    cin >> n >> d >> m;
    v.resize(n + 1);
    b.resize(n + 1);
    f1(i, m){
        int x; cin >> x;
        a[i] = {x, i};
    }
    sort(a + 1, a + m + 1);

    int l = 1, r = n, ans = n;
    while(l <= r){
        int mid = (l + r)/2;
        if(check(mid)){
            r = mid - 1, ans = mid;
            f1(i, n){
                b[i].clear();
                for(auto x:v[i]){
                    b[i].emplace_back(x);
                }
            }
        }
        else l = mid + 1;
    }
    cout << ans << endl;
    f1(i, n){
        for(auto x:b[i]) cout << x << " ";
        cout << 0 << endl;
    }
}

#Verdict Execution timeMemoryGrader output
Fetching results...