社区讨论

30分代码求调

P5661[CSP-J 2019] 公交换乘参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lzj9d1fr
此快照首次捕获于
2024/08/07 10:56
2 年前
此快照最后确认于
2024/08/07 11:43
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int n,num=0;
struct node{
	int z,p,t;
}a[1000005];
struct pack{
	int p,t;
}b[1000005];
int main(){
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> a[i].z >> a[i].p >> a[i].t;
	}
	int m=0,h=0;
	for(int i=1;i<=n;i++){
		for(int j=m-1;j>=h;j--){
			if(a[i].t-45>b[j].t){
				h=j+1;
				break;
			}
		}
		if(a[i].z==0){
			b[m].p=a[i].p;
			b[m].t=a[i].t;
			m++;
			num+=a[i].p;
		}else{
			int u=0;
			for(int j=h;j<m;j++){
				if(b[j].p>=a[i].p && b[j].t>=0 && u==0){
					b[j].t=-1;
					u++;
					break;
				}
			}
			if(u==0){
				num+=a[i].p;
			}
		}
	}
	cout << num;
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...