実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 45
問題概要
穴 に歯が1本ずつ生えている。これらの歯に対して、以下の操作を 回行った後に生えている歯の本数を求めよ。
- 操作 : 穴 に歯が生えている場合、穴 から歯を抜く。そうでなければ、穴 に歯を生やす。
制約
- 入力はすべて整数。
考察
穴に歯が生えているか否かをbool
配列で管理しよう。初期状態は全ての穴に歯が生えているのでtrue
で初期化しておく。あとは 回の操作をシュミレーションして、最終的なtrue
の個数を数えていくだけ。
コード
#include <bits/stdc++.h> using namespace std; using ll = long long; // ======================================== // int main() { int N, Q; cin >> N >> Q; vector<bool> teeth(N + 1, true); rep(i, 0, Q) { int T; cin >> T; teeth[T] = !teeth[T]; } int ans = 0; rep(i, 1, N + 1) if (teeth[i]) ans++; cout << ans << endl; }
実装時間: 5分以内