40分代码
查看原帖
40分代码
742157
ZYK_luogu楼主2023/7/23 20:00
#include <iostream>
#include <cstdio>
using namespace std;
#define maxn 100005
#define int long long
int n, m, p1, s1, p2, s2;
int c[maxn], minv = 1e9, f1, f2;
inline int abs(int x) {
	return x >= 0 ? x : -x;
}
signed main() {
	cin >> n;
	for(int i = 1; i <= n; i ++)
		cin >> c[i];
	cin >> m >> p1 >> s1 >> s2;
	c[p1] += s1;
	for(int i = 1; i < m; i ++)
		f1 += c[i] * (m - i);
	for(int i = m + 1; i <= n; i ++)
		f2 += c[i] * (i - m);
//	printf("f1 = %d, f2 = %d\n", f1, f2);
	if(f1 == f2) {
		cout << m;
		return 0;
	} else if(f1 < f2) {
		for(int i = 1; i < m; i ++) {
			int k = f1;
			k += s2 * (m - i);
			if(abs(k - f2) < minv)
				p2 = i, minv = abs(k - f2);
//			printf("i = %d, k = %d, minv = %d, p2 = %d\n", i, k, minv, p2);
		}
	} else {
		for(int i = m + 1; i <= n; i ++) {
			int k = f2;
			k += (c[i] + s2) * (i - m);
			if(abs(k - f2) < minv)
				p2 = i;
		}
	}
	cout << p2;
	return 0;
}
2023/7/23 20:00
加载中...