頭良くなりたい人

文系大学生shadeのブログです。競技プログラミングや人文学の話題,受験ネタなど。

ABC088 B - Card Game for Two

問題はこちら
atcoder.jp

方針

与えられた x_i を大きい順にソートして,交互に取ってもらっています。

コード

#include <bits/stdc++.h>
using namespace std;
 
int main(){
    int n;
    cin>>n;
 
    vector<int> a(n);
    for(int i=0; i<n; i++){
        cin>>a.at(i);
    }
 
    int alice=0,bob=0;
 
    // aの要素を大きい順にソート
    sort(a.begin(),a.end());
    reverse(a.begin(),a.end());
 
    if(n%2==0){
        for(int i=0; i<n; i+=2){
            alice+=a.at(i);
            bob+=a.at(i+1);
        }
    }else{
        for(int i=0; i<n-1; i+=2){
            alice+=a.at(i);
            bob+=a.at(i+1);
        }
        alice+=a.at(n-1);
    }
 
    cout<<alice-bob<<endl;
}