腾讯2018秋招笔试题之纸牌游戏

题目描述
牛牛和羊羊正在玩一个纸牌游戏,这个游戏一共有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;
}
点赞