比赛 NOIP2025模拟赛4 评测结果 AAAAAAAAAAAAAAAA
题目名称 Lunch Concert 最终得分 100
用户昵称 梧叶已同秋雨去 运行时间 2.038 s
代码语言 C++ 内存使用 7.56 MiB
提交时间 2025-11-27 09:53:14
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,ans,ll=2e18,rr,ansed=2e18;
struct node{
	long long l,r,id,v,d;
}t[200005];
long long check(long long c){
    long long sum=0;
	for(int i=1;i<=n;i++){
		if(t[i].l<=c&&c<=t[i].r)continue;
		if(c<t[i].l)sum+=t[i].v*(t[i].l-c);
		if(c>t[i].r)sum+=t[i].v*(c-t[i].r);
	} 
    return sum;
}
int main(){
	freopen("Concert.in","r",stdin);
	freopen("Concert.out","w",stdout);
	cin>>n; 
	for(int i=1;i<=n;i++){
		int p,d,w;
		cin>>p>>w>>d;
		t[i].l=p-d;t[i].r=p+d;t[i].id=p;t[i].d=d;
		t[i].v=w;
		ll=min(ll,t[i].l);
		rr=max(rr,t[i].r);
	}
	if(n==1){
		cout<<0;return 0;
	}
	while(ll<rr){
		long long mid=(ll+rr)/2;
		long long x=check(mid),y=check(mid+1); 
		if(x==y){
			ll=mid;break;	
		}
		else if(x<y){
			rr=mid;
		}else{
			ll=mid+1;
		}
	}
	cout<<check(ll);
	return 0;
}