各位巨佬帮忙看看
  • 板块灌水区
  • 楼主Soul_hunter
  • 当前回复5
  • 已保存回复5
  • 发布时间2020/10/26 18:12
  • 上次更新2023/11/5 09:49:03
查看原帖
各位巨佬帮忙看看
239663
Soul_hunter楼主2020/10/26 18:12

求debag!!!

题目

#include<cstdio>
const int N = 100000 + 11;
long long n, a[N];
long long m, p1, s1, s2;
long long lans = 0, rans = 0;
long long ans = 0x7fffffff, id;
long long num(long long a, long long b){
	if(a > b)
		return a - b;
	else
		return b - a;
}
int main(){
	scanf("%lld",&n);
	for(int i = 1;i <= n; i++)
		scanf("%lld", &a[i]);
	scanf("%lld%lld%lld%lld",&m, &p1, &s1, &s2);
	for(int i = 1; i < m; i++){
		if(i ==  p1)
			lans += (a[i] + s1) * (m - i);
		else
			lans += a[i] * (m - i);
	}
	for(int i = m + 1; i <= n; i++){
		if(i == p1)
			rans += (a[i] + s1) * (i - m);
		else
			rans += (a[i]) * (i - m);
	}
	long long l, r;
	long long tmp1, tmp2;
	if(lans >= rans){
		for(int i = m; i <= n; i++){
			tmp2 = rans + num((long long)i, m) * s2;
			if(ans > num(tmp2, lans)){
				ans = num(tmp2, lans);
				id = i;
			}
			tmp1 = tmp2;
		}
	}else{
		for(int i = 1; i < m; i++){
			tmp2 = lans + num((long long)i, m) * s2;
			if(ans > num(tmp2, rans)){
				ans = num(tmp2, rans);
				id = i;
			}
			tmp1 = tmp2;
		}
	}
	printf("%lld", id);
	return 0;
}
2020/10/26 18:12
加载中...