【题解】LuoGu2278:[HNOI2003]操作系统

原题传送门
用堆模拟操作系统即可

Code:

#include <bits/stdc++.h>
#define maxn 1000010
using namespace std;
struct heap{
	int id, st, t, level;
	bool operator < (const heap &x) const { return x.level == level ? x.st < st : x.level > level; }
};
priority_queue <heap> q;
int id[maxn], st[maxn], t[maxn], level[maxn], n;

int main(){
	freopen("1.txt", "r", stdin);
	while (~scanf("%d%d%d%d", &id[n + 1], &st[n + 1], &t[n + 1], &level[n + 1])) ++n;
	st[n + 1] = 2e9;
	for (int i = 1; i <= n; ++i){
		q.push((heap){id[i], st[i], t[i], level[i]});
		int s = st[i];
		while (!q.empty()){
			heap tmp = q.top(); q.pop();
			if (tmp.t <= st[i + 1] - s) s += tmp.t, printf("%d %d\n", tmp.id, s);
			else{ tmp.t -= (st[i + 1] - s); q.push(tmp); break; }
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值