80pts WA求助
查看原帖
80pts WA求助
363523
Enterpr1se楼主2020/9/1 19:26

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

2020/9/1 19:26
加载中...