求助
查看原帖
求助
656755
JerryLee123楼主2023/7/26 10:44

评测记录

#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
int a[200005],sum,sum1;
bool cmp(int a,int b){
	return a>b;
}
inline int read()
{
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0' && ch<='9')
        x=x*10+ch-'0',ch=getchar();
    return x*f;
}
main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		a[i]=read();
		sum+=a[i];
	} 
	sum1=sum;
	int m;
	cin>>m;
	sort(a,a+n,cmp);
	while(m--){
		int x,y,minn=1e18+6,ans=0,mini=-1,ans1=0;
		bool b=1;
		sum=sum1;
		cin>>x>>y;
		for(int i=0;i<n;i++){
			if(a[i]>=x&&a[i]<=minn){
				minn=a[i];
				mini=i;
			}
		}
		if(mini==-1){
			ans+=x-a[0];
			mini=0;
			sum-=a[0];
			b=0;
		} 
		else{
			sum-=a[mini];
		}
		if(y-sum<0){
			ans+=0;
		}
		else
		ans+=y-sum;
		sum+=a[mini];
		ans1+=x-a[mini+1];
		sum-=a[mini+1];
		if(y-sum<0){
			ans1+=0;
		}
		else ans1+=y-sum;
		if(b==1)
		cout<<min(ans,ans1)<<endl;
		else cout<<ans<<endl;
	}
	return 0;
} 

本地样例过了但一交上去就0分

(知道要二分但也不能wa啊)

2023/7/26 10:44
加载中...