[AtCoder] ABC 053 D – Card Eater
問題
方針
カードの種類を \( m \) とします。このとき、残ったカードを \( m \) 枚にするためには、\( N – m \) 枚のカードを取り除かなければいけません。\( 1 \) 回の操作で取り除かれるカードは \( 2 \) 枚なので、\( N – m \) が偶数であれば答えは \( m \) となり、奇数であれば答えは \( m – 1\) となります。
コード
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { int N; cin >> N; int A[N]; set<int> s; for (int i = 0; i < N; i++) { cin >> A[i]; s.insert(A[i]); } if (s.size() % 2 == 0) { cout << s.size() - 1 << "\n"; } else { cout << s.size() << "\n"; } return 0; }
感想
思いつきませんでした。
ディスカッション
コメント一覧
まだ、コメントがありません