96分 第二个点WA
查看原帖
96分 第二个点WA
196321
2的512次方楼主2020/8/26 01:25
#include<iostream>
using namespace std;
long long f(long long x1,long long x2){
	if(x1>x2) return x1-x2;
	else return x2-x1;
} 
int main()
{
	long long n;
	cin>>n;
	long long c[n+1];
	for(long long i=1;i<=n;i++) cin>>c[i];
	long long m,p1,s1,s2,p2;
	cin>>m>>p1>>s1>>s2;
	long long pow1=0,pow2=0;
	long long i=1,j=n;
	while(i<j)
	{
		if(i<m) {
			pow1+=c[i]*(m-i);
			i++;
		}
		if(j>m){
			pow2+=c[j]*(j-m);
			j--;
		}
	}
	long long ans=pow1+pow2+1;
	if(p1>m) pow2+=s1*(p1-m);
	if(p1<m) pow1+=s1*(m-p1);
	for(long long i=1;i<=n;i++) 
	{
		long long po1=pow1,po2=pow2;
		if(i<m) {
			po1+=s2*(m-i);
		}
		else {
			po2+=s2*(i-m); 
		}
		if(ans>f(po1,po2))
		{
			p2=i;
			ans=f(po1,po2);
		}
	}
	cout<<p2;
	return 0;
 } 
2020/8/26 01:25
加载中...