80pts求助 最后五个点wa
查看原帖
80pts求助 最后五个点wa
601142
hnoi楼主2023/4/7 11:37
#include <bits/stdc++.h>
#define MAXN 100005
using namespace std;
int c[MAXN];
long long b[MAXN];
int n,m;
long long long1(){
	long long sum=0;
	for(int i=1;i<=m-1;i++){
		sum+=(m-i)*c[i];
	}
	return sum;
}
int hu1(){
	long long sum=0;
	for(int i=n;i>=m+1;i--){
		sum+=(i-m)*c[i];
	}
	return sum;
}
int main(){
	long long p1,s1,s2;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>c[i];
	}
	cin>>m>>p1>>s1>>s2;
	c[p1]+=s1;
	long long longq=long1();
	long long huq=hu1();
	long long cz=abs(longq-huq);
	if(longq>huq){
		for(int i=m;i<=n;i++){
			long long h=s2*(i-m);
			b[i]=abs(cz-h);
		}
		long long ans=9999999999;
		for(int i=m;i<=n;i++){
			if(ans>b[i]) ans=b[i];
		}
		for(int i=m;i<=n;i++){
			if(ans==b[i]) {
				cout<<i;
				b[m]=0;
					break;
			}
		}
	}
	
	else if(longq==huq){
		cout<<m;
	} 
	else if(longq<huq){
		for(int i=1;i<=m;i++){
			long long h=s2*(m-i);
			b[i]=abs(cz-h);
		}
		long long ans=99999999;
		for(int i=1;i<=m;i++){
			if(ans>b[i]) ans=b[i];
		}
		for(int i=1;i<=m;i++){
			if(ans==b[i]) {
				cout<<i;
				break;
			}
		}
	}
}
2023/4/7 11:37
加载中...