60分求助!
查看原帖
60分求助!
778834
InnitTimmer楼主2022/11/16 19:05
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long ll;
const ll N=1e5+10;
ll n,m,p1,s1,s2,p2;
ll a[N],drg=0,trg=0;
bool flag=0;
ll minn=2147483647;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	cin>>m>>p1>>s1>>s2;
	if(p1<m) flag=1;
	else flag=0;
	for(int i=1;i<m;i++){
		if(i==p1) drg+=(a[i]+s1)*(m-i);
		else drg+=a[i]*(m-i);
	}
	for(int i=m+1;i<=n;i++){
		if(i==p1) trg+=(a[i]+s1)*(i-m);
		else trg+=a[i]*(i-m);
	}
	ll t=abs(trg-drg);
	minn=min(minn,t);
	if(flag==1){
		for(int i=m+1;i<=n;i++){
			if(abs((trg+(i-m)*s2)-drg)<minn){
				minn=abs((trg+(i-m)*s2)-drg);
				p2=i;
			}
		}
	}
	if(flag==0){
		for(int i=1;i<m;i++){
			if(abs((drg+(m-i)*s2)-trg)<minn){
				minn=abs((drg+(m-i)*s2)-trg);
				p2=i;
			}
		}
	}
	cout<<p2<<endl;
    return 0;
}

2022/11/16 19:05
加载中...