玄关40分求调代码
查看原帖
玄关40分求调代码
1255496
__LIAM_olivers__楼主2024/10/15 23:04
#include<bits/stdc++.h>
using namespace std;
int a[1000005];
int main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int n,m,s1,s2,p1,p2,f=1;
	cin>>n;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	cin>>m>>p1>>s1>>s2;
	a[s1]+=p1;
	long long ans1,ans2;
	for(int i=m-1;i>=1;i--){
		ans1+=a[i]*i;
	}
	for(int i=m+1;i<=n;i++){
		ans2+=a[i]*(i-m);
	}
	if(ans1==ans2){
		cout<<m;
		return 0;
	}
	int cnt;
	if(ans1>ans2)f=2;
	if(f==1)cnt=ans2-ans1;
	else cnt=ans1-ans2;
	if(s2>ans2 || s2>ans2){
		cout<<m;
		return 0;
	}
	if(f==1){
		f=0;
		int mixn=999999999;
		for(int i=1;i<m;i++){
			if(cnt-a[i]*s2<mixn && cnt-a[i]*s2>=0)f=i,mixn=cnt-a[i]*s2;
		}
	}
	else {
		f=0;
		int mixn=999999999;
		for(int i=n;i>m;i--){
			if(cnt-a[i]*s2<mixn && cnt-a[i]*s2>=0)f=i,mixn=cnt-a[i]*s2;
		}
	}
	if(f==0){
		cout<<m;
		return 0;
	}
	cout<<f;
    return 0;
}

若有帮助,万分感谢(快复赛了祝各位金榜题名,夺取省一)

2024/10/15 23:04
加载中...