제출 #1011912

#제출 시각아이디문제언어결과실행 시간메모리
1011912DrStoneeJob Scheduling (CEOI12_jobs)C++14
0 / 100
95 ms23376 KiB
// Wael Benslimene DrStonee

#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>

using namespace std;
using namespace __gnu_pbds;

template <class T>
using ordered_set = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;


const long long mod=1e9+7;
const long long MOD=998244353;
#define ll long long
#define endl '\n'
#define FAST ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define ff first
#define ss second
#define INF 1e18+5
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()


ll binpow(ll a,ll b){ll res=1;while(b>0){if(b&1)res=(res*a);a=((a)*(a));b/=2;}return res;}
ll gcd(ll a,ll b){return b==0 ? a:gcd(b,a%b);}
ll lcm(ll a,ll b){return (a/gcd(a,b))*b;}
 

const int N=1e5+1;

vector<int> v[N],a[N];

void solve()
{
    int n,d,m,curr=0;cin>>n>>d>>m;
    for(int i=1,x;i<=m;i++)
    {
        cin>>x;
        v[x].pb(i);
        curr=max(curr,((int)v[x].size()+d-1) / d);
    }
    int j=1;
    for(int i=1;i<=n;i++)
    {
        if(v[i].empty())continue;
        for(int x=i;x<=d+i;x++)
        {
            while(!v[i].empty() && (int)a[x].size() < curr)
            {
                a[x].pb(v[i].back());
                v[i].pop_back();
            }
        }
        j=i;
        while(!v[i].empty())
        {
            a[j].pb(v[i].back());
            v[i].pop_back();
            curr=max(curr,(int)a[j].size());
            j++;
            if(j>d+i)j=i;
        }
    }
    cout<<curr<<endl;
    for(int i=1;i<=n;i++)
    {
        for(auto x:a[i])
        {
            cout<<x<<" ";
        }
        cout<<0<<endl;
    }
}   


int main()
{
    FAST;
    
    int t=1;
    // cin>>t;
    while(t--)
    {
        solve();
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...