제출 #734008

#제출 시각아이디문제언어결과실행 시간메모리
734008AbodeKuJob Scheduling (CEOI12_jobs)C++14
0 / 100
270 ms25808 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<ll> vi;
typedef vector<pair<ll,ll>> vpi;
typedef vector<vector<ll>> vvi;
const double EBS = 1e-9;

#define testCase ll t; cin >> t; while (t--)
#define fast  ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define rep(f, s, i) for (ll i = f; i < s; i++)
#define getunique(v) {sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end());}
#define calunique(v)  disance(v.begin(),unique(v.begin(),v.end()));
#define popcount(i) __builtin_popcount(i)
#define el cout << "\n"
#define pb push_back
#define pf push_front
#define no cout << "NO\n"
#define yes cout << "YES\n"
#define all(v) v.begin(), v.end()
#define PII pair<ll,ll>
#define INF (ll)1e9
#define INFLL (ll)1e18
#define debug cout << "___________________________________" << endl
#define int ll

int n , d , k ; 
vpi a ;

bool check(int num){
	int curr = 1 ; 
	
	rep(0 , k , i){
		int cnt = 0 ;
		while( i < k && curr >= a[i].first && cnt < num){
			if (curr - a[i].first > d) return 0 ;
			i++;
			cnt++;
		}
		if (curr - a[i].first > d) return 0 ;

		curr++;
	}
	return 1 ;
}

int32_t main(){
	fast ;
	cin >> n >> d >> k ; 
	a = vpi(k);
	rep(0 , k , i ) cin >> a[i].first , a[i].second = i+1 ;
	sort(all(a));
	int l = 0 , r = k + 1 ; 
	int ans = 0 ; 
	while(l + 1 < r ){
		int mid = (l + r) / 2 ; 
		if (check(mid)){
			ans = mid ; 
			r = mid ;
		}else{
			l = mid ;
		}
	}
	
	cout << ans + 1 << endl ;
	int i = 0 ;
	while(i < k ){
		int cnt = 0 ; 
		while(i < k && cnt <= ans ) cout << a[i++].second << " " , cnt++ ;
		cout << "0\n";
	}
	cout << "0\n0\n";

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