TLE求调
查看原帖
TLE求调
1471248
lifeam楼主2024/11/10 21:02

代码如下:

#include <bits/stdc++.h>
using namespace std;
int a[1000001],n,T,x,y,sum,ans,ma,mi;
int main(){
//	freopen("P9692.txt", "r", stdin);
	scanf("%d",&T);
	for (int rrr=1;rrr<=T;rrr++){
		scanf("%d",&n);
		for (int i=1;i<=n;i++) {
			scanf("%d%d",&x,&y);
			a[x]+=y;
			ma=max(ma,x);
			sum+=y; 
			mi=min(mi,x);
		}
		sum/=2;
		int j=0;
		for (int i=ma;i>=mi;i--){
			if (!a[i]) continue;
			if (a[i]>=sum){
				ans+=i*sum;
				j+=sum;
				break;
			}
			else{
				ans+=a[i]*i;
				sum-=a[i];
				j+=a[i];
			}
			a[i]=0;
		}
		for (int i=mi;i<=ma;i++){
			if (!a[i]) continue;
			if (a[i]>=j){
				ans-=i*j;
				a[i]=0;
				break;
			}
			else{
				ans-=a[i]*i;
				j-=a[i];
			}
			a[i]=0;
		}
		printf("%d\n",ans);
		sum=x=y=ans=ma=0;
		mi=1000000;
	}
	return 0;
}

第二个点就T了

2024/11/10 21:02
加载中...