用了差分,有三个点溢出了long也不行
查看原帖
用了差分,有三个点溢出了long也不行
618195
sajdhkja楼主2022/1/24 18:00
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
const int inf = 1e5 + 10;

int a[inf],b[inf],t;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int n, m;cin>>n>>m;
	long long sum=0;
	int be,ed;cin>>be;
	while(--m)
	{
		cin>>ed;
		if(be<ed)b[be]++,b[ed]--,be=ed;
		else b[ed]++,b[be]--,be=ed;
	}
	for(int i = 1; i <n; i++)a[i]=a[i-1]+b[i];
	for(int i=1;i<n;i++)
	{
		int ai,bi,ci;cin>>ai>>bi>>ci;
		if(a[i]>0)
			if(a[i]*ai>=ci+bi*a[i])sum+=ci+bi*a[i];
			else sum+=a[i]*ai;
	}
	cout<<sum;
	return 0;
}


看别人long就行了,难道还是我这样不行吗

2022/1/24 18:00
加载中...