제출 #1302092

#제출 시각아이디문제언어결과실행 시간메모리
1302092dru-_-Job Scheduling (CEOI12_jobs)C++20
40 / 100
161 ms14276 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool func(int n,const vector<int>& cnt,int mid)
{
    int cur=0;
    for(int i=0;i<n;++i)
    {
        cur+=cnt[i];
        cur-=(cur<mid?cur:mid);
    }

    return cur==0;
}

int main()
{
    std::ios::sync_with_stdio(false);
	std::cin.tie(NULL);

    int n,d,m;
    cin>>n>>d>>m;

    vector<int> cnt(n);
    vector<pair<int,int>> id(m);

    for(int i=0;i<m;++i)
    {
        int t;
        cin>>t;
        --t;

        ++cnt[t];
        id[i].first=t;
        id[i].second=i+1;
    }
    
    sort(id.begin(),id.end());

    int lo=0,hi=-1;
    for(int i=0;i<n;++i)
        hi=max(hi,cnt[i]);

    while(hi-lo>1)
    {
        int mid=(hi+lo)/2;

        if(func(n,cnt,mid))
            hi=mid;
        else
            lo=mid;
    }

    cout<<hi<<'\n';

    for(int i=0;i<n;++i)
    {
        for(int j=i*hi;j<m && j<(i+1)*hi;++j)
            cout<<id[j].second<<' ';
        cout<<0<<'\n';
    }

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