题目描述
牛牛和羊羊正在玩一个纸牌游戏,这个游戏一共有n张纸牌,第i张纸牌上写着数字ai。
牛牛和羊羊轮流抽牌,牛牛先抽,每次抽牌,他们也可以从纸牌堆中任意选择一张抽出,直到纸牌被抽完。
他们的得分等于他们抽到的纸牌数字总和。
现在假设牛牛和羊羊都采用最优策略,请你计算出游戏结束后牛牛得分减去羊羊得分等于多少。
输入描述
输入包括两行。
第一行包括一个正整数n(1 <= n <= 105),表示纸牌的数量。
第二行包括n个正整数ai(1 <= ai <= 109),表示每张纸牌上的数字。
输出描述
输出一个整数,表示游戏结束后牛牛得分减去羊羊得分等于多少。
输入
3
2 7 4
输出
5
知识点:最优策略,排序,边加边减,注意运算顺序,防止数据溢出(用long long int也行)
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=1e5+10;
int a[maxn];
int n;
int main()
{
scanf("%d",&n);
for(int i=0; i<n; i++) scanf("%d",&a[i]);
sort(a,a+n,greater<int>());
LL ans=0;
for(int i=0; i<n; i++)
{
if(i&1)
ans-=a[i];
else
ans+=a[i];
}
printf("%lld\n",ans);
return 0;
}