rt.目前只有40pts.
代码如下:
//By XZ
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
long long bing[100050]; //记录兵营工兵数量。
long long num,mid,to,peo,has,anser;
//num为兵营数量,mid为m,to为p1,peo为s1,has为s2,anser为答案。
long long dra=0,tig=0;//记录龙虎气势
int main()
{
cin>>num;
for(int i=1;i<=num;i++)
{
cin>>bing[i];
}
cin>>mid>>to>>peo>>has;
//录入完毕
bing[to]+=has;//s1派入p1
for(int i=1;i<mid;i++)
{
dra+=bing[i]*abs(mid-i);
}//计算龙气势
for(int i=mid+1;i<=num;i++)
{
tig+=bing[i]*abs(i-mid);
}//计算虎气势
//cout<<dra<<","<<tig<<endl;
long long minn=2147483647;
for(int i=1;i<=num;i++)//暴力枚举
{
int qwq=abs(mid-i),number;
if(i<mid)
{
number=abs(tig-(dra+qwq*has));
}//若将兵派入龙方(左侧)
else
{
if(i>mid)
{
number=abs(dra-(tig+qwq*has));//兵派入虎方
}
else
{
number=abs(dra-tig);//兵派入中间军营
}
}
if(number<minn)//若气势差比最小值小
{
minn=number;
anser=i;
}
//cout<<i<<":"<<number<<endl;
}
//cout<<endl;
cout<<anser;
return 0;
}