Submission #1208620

#TimeUsernameProblemLanguageResultExecution timeMemory
1208620Vivek_03_Job Scheduling (CEOI12_jobs)C++20
0 / 100
1096 ms15472 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main() {
    int n,d,m;
    cin>>n>>d>>m;

    vector<int> v(n+1);
    vector<vector<int>> idx(n+1);
    vector<int> ct_idx(n+1);

    for(int i=1;i<=m;i++)
    {
        int start;
        cin>>start;

        v[start+d]++;
        idx[start+d].push_back(i);
    }

    int ans=1;
    vector<vector<int>> result(n+1);

    for(int i=1;i<=n;i++)
    {
        int in_use = v[i];
        // i is the deadline day. v[i]->number of tasks on the day of deadline
        if(v[i]>0)
        {
            if(ans < v[i])
            {
                ans = v[i];
            }
            else v[i]=0;

            for(int j=ct_idx[i];j<idx[i].size();j++)
            result[i].push_back(idx[i][j]);
        }

        int available = ans - in_use, j=i+1;

        //cout<<available<<"\n\n\n";

        while(available > 0 && j<=n)
        {
            int temp = min(available, v[j]), k;
            v[j] -= temp;
            available -= temp;

            for(k=ct_idx[j];k<min(temp+ct_idx[j], (int)idx[j].size());k++)
            result[i].push_back(idx[j][k]);
            
            ct_idx[j] = k;
            j++;
        }
    }

    cout<<ans<<'\n';

    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<result[i].size();j++)
        cout<<result[i][j]<<" ";
        cout<<"0\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...