求助p5016
查看原帖
求助p5016
425987
白鹤谢尔盖24楼主2021/7/18 10:01
#include<bits/stdc++.h>
using namespace std;
int lh1(int a,int b){
	return a*b;
}
int main(){
	int n,m,s1,s2,p1,p2;
	int qp[100001]={0};
	int diff=0;
	int diff1=0; 
	int l=0,h=0; 
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>qp[i];
	}
	cin>>m>>p1>>s1>>s2;
	//天降神兵 
	qp[p1]+=s1;
	//计算龙气势
	for(int i=1;i<=m-1;i++){
		l+=lh1(m-i,qp[i]);
	}
	//计算虎气势
	for(int i=m+1;i<=n;i++){
		h+=lh1(i-m,qp[i]);
	}
	//如果龙气势大于虎气势 
	if(l>h){
		//计算当前龙虎差 
		diff=l-h;
		//遍历虎方所有兵营和m号兵营 
		for(int i=m;i<=n;i++){
			//更新龙虎之差  
			diff1=l-(h+lh1(i-m,s2));
			//求更新后龙虎之差的绝对值 
			diff1=abs(diff1);
		
			if(diff1<diff){
				p2=i;
				diff=diff1;
			}	
			
		}
	}
	else if(l<h){
		//计算当前龙虎差
		diff=h-l;
		//遍历龙方所有兵营和m号兵营
		for(int i=1;i<=m-1;i++){
			//更新龙虎之差
			diff1=h-(l+lh1(m-i,s2)) ;
			//计算更新之后龙虎之差的绝对值 
			diff1=abs(diff1);
		
			if(diff1<diff){
				p2=i;
				diff=diff1;
			}	
			
		}
	}
	else{
		p2=m;
	}
	cout<<p2;
	return 0;
} 
2021/7/18 10:01
加载中...