18分求调
  • 板块P3619 魔法
  • 楼主xiangjinhui
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/17 08:09
  • 上次更新2025/1/17 11:56:52
查看原帖
18分求调
1320060
xiangjinhui楼主2025/1/17 08:09
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int Z;
struct ismall{
	int t;
	int b;
	int h;
};
struct ibig{
	int t;
	int b;
};
vector<ismall> a1;
vector<ibig> a2;
bool cmp1(ismall x,ismall y){
	return x.h>y.h;
}
bool cmp2(ibig x,ibig y){
	return x.t<y.t;
}
int main(){
	cin>>Z;
//	ismall q1;
//	q1.t=0,q1.b=0,q1.h=0;
//	a1.push_back(q1);
//	ibig q2;
//	q2.b=0,q2.t=0;
//	a2.push_back(q2);  
	while(Z--){
		int n,T;
		bool sf=0;
		cin>>n>>T;
		for(int i=1;i<=n;i++){
			int x,y;
			cin>>x>>y;
			if(y<0){
				ismall s;
				s.t=x,s.b=y,s.h=x+y;
				a1.push_back(s);
			}
			else{
				ibig s;
				s.t=x,s.b=y;
				a2.push_back(s);
			}
		}
		sort(a1.begin(),a1.end(),cmp1);
		sort(a2.begin(),a2.end(),cmp2);
		for(int i=0;i<a2.size();i++){
			if(T>a2[i].t){
				T+=a2[i].b;
			}else{
				sf=1;
				break;
			}
		}
		for(int i=0;i<a1.size();i++){
			if(T>a1[i].t){
				T+=a1[i].b;
			}else{
				sf=1;
				break;
			}
			if(T<=0){
				sf=1;
				break;
			}
		}
		if(!sf){
			cout<<"+1s\n";
		}
		else{
			cout<<"-1s\n";
		}
	} 
	return 0;
} 
2025/1/17 08:09
加载中...