AtCoder BC073 C: Write and Erase

問題

C - Write and Erase
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.

解法

数字の出現回数が

・偶数回:消えている
・奇数回:書かれている

ので、mapを使って出現回数をカウントしておき、最後に奇数回のものを数えれば解けます。

これ以外にもsetを使って操作をシミュレートしても良い。

実装

#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<cmath>
#include<string>

#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)   FOR(i,0,n)
#define MOD 1000000007

using namespace std;
 
typedef long long int ll;

const ll INF=(ll)1e18;

int main(){
    int N;
    cin >> N;

    map<ll,int> m;

    REP(i,N){
        ll a;
        cin >> a;
        m[a]++;
    }

    int ans=0;
    for(auto itr = m.begin(); itr != m.end(); itr++){
        if(itr->second % 2 != 0){
            ans++;
        }
    }

    cout << ans << endl;
}

コメント

タイトルとURLをコピーしました