卡测试点11

键盘敲碎夜深沉,代码如麻乱假真 · 发布于 2024-07-24 · 浏览 651 回复 1

include<bits/stdc++.h>

using namespace std; int main(){

int n;
cin>>n;
long long a[n+1];
for(int i=1;i<=n;i++){
	cin>>a[i];
}
int m,s1,p1,s2;
cin>>m>>p1>>s1>>s2;
a[p1]+=s1;
int l=0,r=0;//m左、右的气势值 
for(int i=1;i<m;i++){
	l+=a[i]*abs(i-m);
}
for(int i=m+1;i<=n;i++){
	r+=a[i]*abs(i-m);
}

// cout<<l<<' '<<r<<endl; int min=0x3f3f3f3f; int p2; if(l==r||abs(r-l)<s2){ cout<<m<<endl; return 0; }else if(l<r){//放在左侧 for(p2=m-1;p2>=1;p2--){

		l+=(m-p2)*s2;
		if(abs(r-l)<min){
			min=p2;	
		} 
		l-=(m-p2)*s2;
	} 
	cout<<min<<endl;
	return 0;
}else{
	int p2;
	for(p2=m+1;p2<=n;p2++){
		l+=(p2-m)*s2;
		if(abs(r-l)<min){
			min=p2;
		}
		l-=p2-m*s2;
	} 
	cout<<min<<endl;                 
	return 0;
}
return 0;

}

全部回复 共 1 条

  1. include<bits/stdc++.h>

    using namespace std; int main(){

    int n;
    cin>>n;
    long long a[n+1];
    for(int i=1;i<=n;i++){
    	cin>>a[i];
    }
    int m,s1,p1,s2;
    cin>>m>>p1>>s1>>s2;
    a[p1]+=s1;
    int l=0,r=0;//m左、右的气势值 
    for(int i=1;i<m;i++){
    	l+=a[i]*abs(i-m);
    }
    for(int i=m+1;i<=n;i++){
    	r+=a[i]*abs(i-m);
    }
    

    // cout<<l<<' '<<r<<endl; int min=0x3f3f3f3f,minp=n; int p2; if(l==r||abs(r-l)<s2){ cout<<m<<endl; return 0; }else if(l<r){//放在左侧 for(p2=m-1;p2>=1;p2--){

    		l+=(m-p2)*s2;
    		if(abs(r-l)<min){
    			min=abs(r-l);	
    			minp=p2;
    		} 
    		l-=(m-p2)*s2;
    	} 
    	cout<<minp<<endl;
    	return 0;
    }else{
    	int p2;
    	for(p2=m+1;p2<=n;p2++){
    		l+=(p2-m)*s2;
    		if(abs(r-l)<min){
    			min=abs(r-l);
    			minp=p2;
    		}
    		l-=p2-m*s2;
    	} 
    	cout<<minp<<endl;                 
    	return 0;
    }
    return 0;
    

    } / 3 1 1 1 2 1 58 56 /

发表回复