本記事は管理人が競技プログラミングを始めたため,その精進日記としてログを取ったものです。アウトプットして積極的にモチベーションを上げていく作戦です。記事目次は以下をご覧ください。
【競プロ精進日記】目次まとめ
ABC
Atcoder Beginner Contestの過去問を解いています。最低限のコメントと一言が添えられています。
...
スポンサーリンク
AtCoder Beginners Selection
AtCoder Beginners Selectionの問題を1から解いていくシリーズです。使用言語はc++とpythonです。今回はABC088B Card Game for Twoです。
c++
#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;
int main() {
int N = 0;
cin >> N;
int Alice = 0;
int Bob = 0;
vector<int> A(N);
rep(i, N){
cin >> A[i];
}
// まずは小さい順
sort(A.begin(), A.end());
// 次に大きい順
reverse(A.begin(), A.end());
// 偶数インデックスはAlice
// 奇数インデックスはBob
rep(i, N){
if (i%2==0) Alice += A[i];
else Bob += A[i];
}
cout << Alice - Bob << endl;
}
シンプルな問題です。配列をソートできますかという練習ですね。ソートした後のインデックスが偶数か奇数かでAliceとBobに分配していきます。
python
N = int(input())
A = list(map(int, input().split()))
A.sort(reverse=True)
Alice = 0
Bob = 0
for n in range(N):
if n%2 == 0:
Alice += A[n]
else:
Bob += A[n]
print(Alice - Bob)
pythonでも方針は同様です。