龙虎斗 红红黑黑的一大片,原来帮我的那个人不知道去哪里了。
#include<iostream>
#include<cmath>
using namespace std;
long long n;
long long army[1000000];
long long m,p1,s1,s2,p2;
long long tiger,dragon;
long long minx_[1000000],minx1[1000000],minx2[1000000];
long long ans=0,sum=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>army[i];
}
cin>>m>>p1>>s1>>s2;
if(p1!=m){
army[p1]+=s1;
}
for(int i=1;i<m;i++){
dragon+=army[i]*(m-i);
}
for(long long j=n;j>m;j--){
tiger+=army[j]*(j-m);
}
long long mat=abs(dragon-tiger); //min at the moment
long long minx; //unstable value of min
if(dragon<tiger){
for(long long i=1;i<m;i++){
long long dragon2=0;
dragon2=dragon+(army[i]+s2)*(m-i);
minx=abs(dragon2-tiger);
if(minx<=mat){
minx1[i]=minx;
}
}
}
else{
for(long long j=n;j>m;j--){
long long tiger2=0;
tiger2=tiger+(army[j]+s2)*(j-m);
minx=abs(tiger2-dragon);
if(minx<=mat){
minx2[j]=minx;//tiger的气势
}
}
}
for(int i=1;i<=m;i++){
while(minx1[i]!=0){
minx_[i]=minx1[i];//数组合并
}
}
for(int j=1;j>m;j--){
while(minx2[j]!=0){
minx_[j]=minx2[j];//数组合并
}
}
sort(minx_,minx_+n);//把minx1和minx2合并在一起之后的气势P2所有值排序
cout<<minx_[1];
return 0;
}
不知道哪里出了问题,minx_[]数组全部是0.