問題

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; }
コメント