P4995 跳跳!

P4995 跳跳!

题目

P4995 跳跳!

题目大概的意思就是给出你n个石头高度 , 让你求消耗体力最大是多少

思路

  1. ans += 最大的数
  2. 如果当前位置是最大的 就找最小的

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
const int N = 1e6 + 10;

int a[N], b[N];

bool cmp (int a, int b) {
	return a > b;
}
signed main ()
{
	ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
	int n; cin >> n;
	for (int i = 0 ; i < n ; i ++) cin >> a[i];
	sort(a, a + n, cmp);
	int ans = 0;
	ans += a[0] * a[0];
	int l = 1 , r = n - 1, flag = 0, now = 0;
	for (int i = 1 ; i < n ; i ++) {
		if (flag == 0) {
			ans += (a[r] - a[now]) * (a[r] - a[now]);
			now = r;
			r --;
			flag = 1;
		}
		else {
			ans += (a[l] - a[now]) * (a[l] - a[now]);
			now = l;
			l ++;
			flag = 0;
		}
	}
	cout << ans << endl;
}
上一篇:Codeforces Round #739 (Div. 3)A~F2


下一篇:sift算法