求助(不知道如何结束循环)
查看原帖
求助(不知道如何结束循环)
1144295
pyhao楼主2024/7/27 16:23

全部RE,样例只输出了前两个点

#include<bits/stdc++.h>
using namespace std;
struct node{
	int id,s,t,p;	
};
node a[20000];
void heapon(int i){
	while(i>1){
		int j=i/2;
		if(a[j].p>a[i].p)break;
		if(a[j].p==a[i].p&&a[j].s<a[i].s)break;
		swap(a[j],a[i]);
		i=j;
	}
}
void heapd(int i,int n){
	while(i<=n/2){
		int j=i*2;
		if(j<n&&a[j+1].p>a[j].p)j++;
		if(a[i].p>a[j].p)break;
		if(a[i].p==a[j].p&&a[i].s<a[j].s)break;
		swap(a[i],a[j]);
		i=j;
	}
}
int id1,s1,t1,p1;
int main(){
	int la=1;
	cin>>a[1].id>>a[1].s>>a[1].t>>a[1].p;
	int ct,ft;
	ct=a[1].s;
	int result;
	while(scanf("%d %d %d %d \n",&id1,&s1,&t1,&p1)!=EOF){
		ft=s1-ct;ct=s1;
		while(la>0&&ft>0){
			if(a[1].t<=ft){
				ft-=a[1].t;
				cout<<a[1].id<<" "<<ct-ft<<endl;		
				swap(a[1],a[la]);
				la--;
				heapd(1,la);
			}
			else {
				a[1].t-=ft;
				ft=0;
			}
		}
		a[++la].id=id1;a[la].s=s1;a[la].t=t1;a[la].p=p1;
		heapon(la);
	}
		while(la){
			ct+=a[1].t;
			cout<<a[1].id<<" "<<ct<<endl;
			swap(a[1],a[la]);
			la--;
			heapd(1,la);
		} 
	return 0;
}
2024/7/27 16:23
加载中...