警示后人
查看原帖
警示后人
1039211
Wendy_Hello_qwq楼主2024/12/11 21:23

记得开 longlong longlong!记得开 longlong longlong!记得开 longlong longlong!重要的事情说三遍。

不开 longlong longlong 的话会痛失 20pts20pts

#include <cstdio>
using namespace std;
long long min1 = 1e19;
long long  dragon, tiger;
long long n, m, p1, s1, s2, pos, c[100007];
long long abs (long long, long long);
int main() {
	scanf ("%lld", &n);
	for (int i = 1; i <= n; i++)
		scanf ("%d", &c[i]);
	scanf ("%lld%lld%lld%lld", &m, &p1, &s1, &s2);
	c[p1] += s1;
	for (int i = 1; i <= n; i++) {
		if (i < m)
			dragon += (m - i) * c[i];
		else if (i > m)
			tiger += (i - m) * c[i];
	}
	for (int i = 1; i <= n; i++) {
		int x = dragon;
		int y = tiger;
		if (i < m)
			x += (m - i) * s2;
		else if (i > m)
			y += (i - m) * s2;
		int num = abs (x, y);
		if (num < min1) {
			min1 = num;
			pos = i;
		}
	}
	printf ("%lld", pos);
	return 0;
}
long long abs (long long a, long long b) {
	if (a >= b)
		return a - b;
	else
		return b - a;
}

80pts80pts 记录。

#include <cstdio>
using namespace std;
long long min1 = 1e19;
long long dragon, tiger;
long long n, m, x, y, p1, s1, s2, pos, c[100007];
long long abs (long long, long long);
int main() {
	scanf ("%lld", &n);
	for (int i = 1; i <= n; i++)
		scanf ("%d", &c[i]);
	scanf ("%lld%lld%lld%lld", &m, &p1, &s1, &s2);
	c[p1] += s1;
	for (int i = 1; i <= n; i++) {
		if (i < m)
			dragon += (m - i) * c[i];
		else if (i > m)
			tiger += (i - m) * c[i];
	}
	for (int i = 1; i <= n; i++) {
		x = dragon;
		y = tiger;
		if (i < m)
			x += (m - i) * s2;
		else if (i > m)
			y += (i - m) * s2;
		long long num = abs (x, y);
		if (num < min1) {
			min1 = num;
			pos = i;
		}
	}
	printf ("%lld", pos);
	return 0;
}
long long abs (long long a, long long b) {
	if (a >= b)
		return a - b;
	else
		return b - a;
}

AC 记录。

2024/12/11 21:23
加载中...