Submission #83818

#TimeUsernameProblemLanguageResultExecution timeMemory
83818mra2322001Job Scheduling (CEOI12_jobs)C++14
25 / 100
351 ms33792 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, pair <int, int> > a[N*10];
vector <vector <int> > v, b;

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