제출 #978499

#제출 시각아이디문제언어결과실행 시간메모리
978499batsukh2006Job Scheduling (CEOI12_jobs)C++17
100 / 100
113 ms21328 KiB
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<map>
#include<string>
#include<algorithm>
#include<vector>
#include<string.h>
#include<utility>
#include<set>
#include<cmath>
#include<queue>
#include<deque>
#include<functional>
#include<stack>
#include<limits.h>
#include<iomanip>
#include<unordered_map> 
#include<numeric>
#include<tuple>
#include<bitset>
using namespace std;
#define MOD 1000000007
#define int long long
#define ss second
#define ff first
#define endl '\n'		
signed main(){
    // freopen("file.in", "r", stdin);
    // freopen("file.out", "w", stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
	int n,d,m; cin>>n>>d>>m;
	vector<int> v[n+1];
	for(int i=1; i<=m; i++){
		int a; cin>>a;
		v[a].push_back(i);
	}
	int l=1,r=m;
	while(l<=r){
		int mid=l+(r-l)/2;
		bool ok=1;
		int sum=0;
		for(int i=1; i<=n; i++){
			sum+=v[i].size();
			if((sum+mid-1)/mid-1>d) ok=0;
			sum-=min(sum,mid);
		}
		if(ok) r=mid-1;
		else l=mid+1;
	}
	queue<int> q;
	cout<<l<<endl;
	for(int i=1; i<=n; i++){
		for(auto x: v[i]) q.push(x);
		int need=l;
		while(!q.empty()&&need--){
			cout<<q.front()<<' ';
			q.pop();
		}
		cout<<0<<endl;
	}
    return 0;
}



























#Verdict Execution timeMemoryGrader output
Fetching results...