表題の通り、AtCoder ABC111Cのテストケースが1つだけクリアできません。
自分で考えてみてもわからなかったので、コードのミスをご指摘いただければと思います。
言語はC++14 (GCC 5.4.1)です。
問題
https://atcoder.jp/contests/abc111/tasks/arc103_a
該当のソースコード
C++
1#include <bits/stdc++.h> 2#define rep(i,n) for (int i = 0; i < (n); ++i) 3using namespace std; 4 5int main() { 6 int n, odd, even; 7 cin >> n; 8 vi ocnt(100001); 9 vi ecnt(100001); 10 rep(i,n/2){ 11 cin >> odd; 12 ocnt.at(odd) ++; 13 cin >> even; 14 ecnt.at(even) ++; 15 } 16 17 odd=0, even=0; 18 int odd2=0, even2=0, oddc=0, evenc=0; 19 20 rep(i,100001){ 21 if(odd < ocnt.at(i)){ 22 odd = ocnt.at(i); 23 oddc = i; 24 } 25 else if(odd2 <= ocnt.at(i) && odd >= ocnt.at(i)){ 26 odd2 = ocnt.at(i); 27 } 28 if(even < ecnt.at(i)){ 29 even = ecnt.at(i); 30 evenc = i; 31 } 32 else if(even2 <= ecnt.at(i) && even >= ecnt.at(i)){ 33 even2 = ecnt.at(i); 34 } 35 } 36 37 int ans = 0 ; 38 if (oddc==evenc) ans = max(odd+even2,odd2+even); 39 else ans = odd+even; 40 41 cout << n-ans << endl; 42 return 0; 43}
試したこと
上記のテストケースで74372を出力しており、解答の74371と相違しているのは確認しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/06 05:20