int main() { cout <<setprecision(10); ll n; cin >> n; map<ll,bool> A; rep(i,n){ ll a; cin >> a; if(!A.count(a)||A[a] == false){//存在していないならばboolをtrueにする A[a] = true; }else{ //すでに入っているんだったらfalse にする A[a] = false; } } ll ans = 0 ; for(auto x : A){//true を数える if(x.second){ ans ++ ; } } cout << ans << endl; }
int main() { cout <<setprecision(10); int n ; cin >> n; map<ll,ll> A; rep(i,n){ int a ; cin >> a; A[a] ++; } ll ans = 0; for(auto x : A){ if(x.second %2 == 1){ ans ++ ; } } cout << ans << endl; }
int main() { cout <<setprecision(10); ll n ; cin >> n; vector<int> A(n); rep(i,n) cin >> A[i]; SORT(A); ll ans = 0 ; ll bef = -1 ; rep(i,n){ if(bef != A[i] ){ ans ++; bef = A[i]; }else{ ans --; bef = -1; } } cout << ans << endl; }
解法
提出1も提出2もやっていることはほとんど同じ。
マップを用いて実装した。
提出1
一回目に出てくるときは紙に数字を書くのでキーをその数字としてtrueを書き込む
二回目以降はtrueとfalseを入れ替える
提出2
出てきた回数をカウントして、それが奇数ならそのキーは紙に書かれている。
その数(奇数回出てきたものの数)を数える
提出3
とても分かりずらいコードだと思う。
とりあえず読んでみて。
分からなくてもいいです。