悬关,80pts求助
查看原帖
悬关,80pts求助
773371
Dreeick楼主2023/7/13 15:52

开了 long long,不知道错哪了……

#include <iostream>

using namespace std;

unsigned long long n,m,p1,p2 = 1,s1,s2,c_[100001],d,t,*c = c_-1;

unsigned long long lz(unsigned long long x){
	if(x < m){
		int d2 = d;
		d2 -= c[x] * (m-x);
		d2 += (c[x] + s2) * (m-x);
		return (t > d2?t-d2:d2-t);
	}
	else if(x > m){
		int t2 = t;
		t2 -= c[x] * (x-m);
		t2 += (c[x] + s2) * (x-m);
		return (t2 > d?t2-d:d-t2);
	}
	else return (t > d?t-d:d-t);
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n;
	for(unsigned long long i = 1;i <= n;i++){
		cin >> c[i];
	}
	cin >> m >> p1 >> s1 >> s2;
	c[p1] += s1;
	for(unsigned long long i = 1;i < m;i++){
		d += c[i] * (m-i);
	}
	for(unsigned long long i = m+1;i <= n;i++){
		t += c[i] * (i-m);
	}
	for(unsigned long long i = 2;i <= n;i++){
		if(lz(i) < lz(p2)) p2 = i;
	}
	cout << p2;

	return 0;
}

dalao 如能指出错误,当感激不尽

2023/7/13 15:52
加载中...