60pts求调
查看原帖
60pts求调
1337754
crazy_psycho楼主2024/11/19 07:11
#include<bits/stdc++.h>
#define ll long long 
using namespace std;
const int N=2e5+10;
struct node {
	ll id;
	ll s,t;
}a[N];
bool cmp(node a,node b){
	return a.t<b.t;
}
ll n,m;
vector<ll> ans[N];
priority_queue<pair<ll,ll>,vector<pair<ll,ll> >,greater<pair<ll,ll> > > lq; //结束打印的时刻 打印机编号 
priority_queue<ll,vector<ll>,greater<ll> > em; //空闲打印机编号 
int main(){
	//freopen("print3.in","r",stdin);
	//freopen("print3.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i].s>>a[i].t;
		a[i].id=i;
	}
	sort(a+1,a+1+n,cmp);
	/*
	for(int i=1;i<=n;i++){
		cout<<a[i].t<<" ";
	}
	cout<<endl;*/
	for(int i=1;i<=m;i++){
		em.push(i);
	}
	for(int i=1;i<=n;i++){
		
		if(em.empty()){
			continue;
		} 
		while(!lq.empty() and a[i].t>=lq.top().first){
			//cout<<a[i].t<<" "<<a[i].id<<" "<<lq.top().second<<endl;
			em.push(lq.top().second);
            lq.pop();
		}
		ll ai=em.top();
		em.pop();
		ans[ai].push_back(a[i].id);
		lq.push(make_pair(a[i].t+a[i].s,ai));
	}
	for(int i=1;i<=m;i++){
		sort(ans[i].begin(),ans[i].end());
	}
	for(int i=1;i<=m;i++,cout<<endl){
		cout<<ans[i].size()<<" ";
		for(auto x:ans[i]){
			cout<<x<<" ";
		}
	}
	return 0;
}
2024/11/19 07:11
加载中...