卡测试点11

lzhh_lzhh26  •  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;

}


评论:

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 /


lzhh_lzhh26  •  1个月前

请先登录,才能进行评论