样例全过,然后提交全WA
  • 板块P4995 跳跳!
  • 楼主Stevehim
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/10/27 19:17
  • 上次更新2023/10/27 05:34:48
查看原帖
样例全过,然后提交全WA
759274
Stevehim楼主2022/10/27 19:17
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <string>
#define maxn 100010
#define itn int
using namespace std;
int a[maxn];
itn n;
int sum;

int dis(int a, int b) {
	return pow(a - b, 2);
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	sort(a, a + n);
	sum += a[n - 1] * a[n - 1];
	if (n % 2 == 0) { //n为偶数时,从小的跳到大的只需要跳 n / 2 - 1次,大的跳n / 2次。小的总是跳到n - i个石头上
		for (int i = 1; i <= n / 2 - 1; i++) {
			sum += dis(a[i], a[n - i]);
		}
		for (int i = n, j = 1; j <= n / 2; i--, j++) { //这里开2个计数器
			sum += dis(a[i], a[n + 1 - i]); //这里是n + 1 - i
		}
	} else { //n为奇数时需要(n - 1) / 2次
		for (int i = 1; i <= (n - 1) / 2; i++) {
			sum += dis(a[i], a[n - i]);
		}
		for (int i = n, j = 1; j <= (n - 1) / 2; i--, j++) {
			sum += dis(a[i], a[n + 1 - i]); //这里是n + 1 - i
		}
	}
	cout << sum;
	return 0;
}

2022/10/27 19:17
加载中...