1 条题解

  • 0
    @ 2023-7-12 21:32:30
    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<math.h>
    #include<string>
    using namespace std;
    const long long INF=0x3f3f3f3f;
    const long long N=1e5+10;
    long long n,m,T,a_cnt,b_cnt;
    struct node{
    	int c,w;
    }a[N],b[N]; 
    bool cmp_a(node a,node b){
    	return a.w<b.w;
    }
    bool cmp_b(node a,node b){
    	return a.w>b.w;
    }
    int main(){
    	cin>>T;
    	while(T--){
    		a_cnt=b_cnt=0;
    		
    		cin>>n>>m;
    		for(int c,w,i=1;i<=n;i++){
    			cin>>w>>c;
    			if(c>0){
    				a[++a_cnt].c=c;
    				a[a_cnt].w=w;
    			}else{
    				b[++b_cnt].c=c;
    				b[b_cnt].w=w;
    			}
    		}
    		
    		sort(a+1,a+a_cnt+1,cmp_a);
    		sort(b+1,b+b_cnt+1,cmp_b);
    		
    		bool flag=1;
    		if(m<0)flag=0;
    		for(int i=1;i<=a_cnt&&flag;i++){
    			if(m<a[i].w)flag=0;
    			m+=a[i].c;
    		}
    		for(int i=1;i<=b_cnt&&flag;i++){
    			if(m<b[i].w)flag=0;
    			m+=b[i].c;
    			if(m<0)flag=0;
    		}
    		
    		if(flag)cout<<"+2.5\n";
    		else cout<<"-2.5\n";
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    2987
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    104
    已通过
    19
    上传者