60 pts WA 求条
查看原帖
60 pts WA 求条
926886
kind_Ygg楼主2024/11/27 14:31
#include<bits/stdc++.h>
#define int long long 
#define pi pair<int,int>
#define mp make_pair
#define rg register
using namespace std;
const int N=2e5+5;
int n,m;
struct node{int s,t,p;}bag[N];
int ans[N];
priority_queue<pi,vector<pi>,greater<pi> > q1,q2;
vector<int> a[N];
inline bool cmp(node a,node b){return a.t<b.t;}
signed main(){
//	freopen("print.in","r",stdin);
//	freopen("print.out","w",stdout);
	scanf("%lld%lld",&n,&m);
	for(rg int i=1;i<=n;++i) scanf("%lld%lld",&bag[i].s,&bag[i].t),bag[i].p=i;
	sort(bag+1,bag+n+1,cmp);
	for(rg int i=1;i<=m;++i) q1.push(mp(i,0));
	for(rg int i=1;i<=n;++i){
		while(q2.size() and q2.top().first<=bag[i].t){
			pi f=q2.top();
			q2.pop();
			q1.push(mp(f.second,f.first));
		}
		if(!q1.size())
		{
			pi f=q2.top();
			q1.push(mp(f.second,f.first));
			q2.pop();
		}
		pi f=q1.top();
		q1.pop();
		++ans[f.first];
		a[f.first].push_back(bag[i].p);
		q2.push(mp(bag[i].t+bag[i].s,f.first));
	}
	for(rg int i=1;i<=m;++i){
		printf("%lld",ans[i]);
		sort(a[i].begin(),a[i].end());
		for(rg int j=0;j<a[i].size();++j) printf(" %lld",a[i][j]);
		putchar('\n');
	}
	return 0;
}
2024/11/27 14:31
加载中...