#AtCoder Beginner Contest73
最初、何も書いていない紙がある。
joisinoお姉ちゃんが一つの数字を言うので、その数字が紙に書いてあれば紙からその数字を消し、書いていなければその数字を紙に書く。これを N回繰り返す。その後、紙に書かれている数字がいくつあるかを答える。joisinoお姉ちゃんが言った数字が、言った順番に A1,...,ANとして与えられるので、ゲーム終了後に紙に書かれている数字がいくつあるか答えてください。
この問題について取り組んでいましたがACを出すことが出来ません。
私の書いた実装のどの部分に問題があるのかをご教示いただけると幸いです。
考えとしてはsortした配列をforループで回して、
v[i] == v[i+1]つまり偶数個であればcountをインクリメントせずに i++として
2つ先のindexに移るという意図でこのコードを書きました。
cpp
1#include <bits/stdc++.h> 2using namespace std; 3using ll = long long; 4const long long INF = 1LL << 60; 5 6int main() { 7 int N, count = 0; 8 cin >> N; 9 vector<int> v(N); 10 11 for(int i=0; i<N; i++) { 12 cin >> v[i]; 13 } 14 sort(v.begin(), v.end()); 15 16 for(int i=0; i<N-1; i++) { 17 if(v[i] == v[i+1]) { 18 i++; 19 } 20 else { 21 count++; 22 } 23 } 24 cout << count << endl; 25}
上の実装で
入力値として以下の入力をした時は正常な出力がされていることは確認しました。
3 6 2 6 -> 1が出力
4 2 5 5 2 -> 0が出力
しかしながらWAの入力もあるためこの実装の問題点を指摘いただけると幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/08 03:07