rt,80分,五个点WA
提交记录
代码:
//lg-5016
//NOIP-J 2018
#include<iostream>
using namespace std;
int n,m;
long long lsum/*龙侧气势*/,rsum/*虎侧气势*/,cnt[1000005]/*指每个军营的步兵数*/,p1,s1,p2=1,s2,bans=9223372036854775807,cans;
long long abs(long long a){/*自己写了个绝对值函数*/
if(a>=0) return a;
else return 0-a;
}
int ans(int _id,long long _num){/*求加入s2个工兵后 阵营气势的差距*/
if(_id<m) return abs(lsum+(_num*(m-_id))-rsum);
else if(_id>m) return abs(rsum+(_num*(_id-m))-lsum);
else return abs(lsum-rsum);
}
int main(){
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;++i) cin>>cnt[i];
cin>>m>>p1>>s1>>s2;
cnt[p1]+=s1;
for(int i=1;i<m;++i) lsum+=cnt[i]*(m-i);
for(int i=m+1;i<=n;++i) rsum+=cnt[i]*(i-m);
if(lsum>rsum){
for(int i=m;i<=n;++i){
cans=ans(i,s2);
if(cans<bans) p2=i,bans=cans;
}
}
else if(rsum>lsum){
for(int i=1;i<=m;++i){
cans=ans(i,s2);
if(cans<bans) p2=i,bans=cans;
}
}
else p2=m;
cout<<p2;
return 0;
}
求dalao帮助qwq