Problem:


Score : 300 points

Problem Statement

A sequence a_1,a_2,... ,a_n is said to be /\/\/\/ when the following conditions are satisfied:

For each i = 1,2,..., n-2, a_i = a_{i+2}.

Exactly two different numbers appear in the sequence.

You are given a sequence v_1,v_2,...,v_n whose length is even.
We would like to make this sequence /\/\/\/ by replacing some of its elements.
Find the minimum number of elements that needs to be replaced.

Constraints

2 \leq n \leq 10^5

n is even.

1 \leq v_i \leq 10^5

v_i is an integer.

Input

Input is given from Standard Input in the following format:

n
v_1 v_2 ... v_n

Output

Print the minimum number of elements that needs to be replaced.

Sample Input 1

4
3 1 3 2

Sample Output 1

1

The sequence 3,1,3,2 is not /\/\/\/, but we can make it /\/\/\/ by replacing one of its elements: for example, replace the fourth element to make it 3,1,3,1.

Sample Input 2

6
105 119 105 119 105 119

Sample Output 2

0

The sequence 105,119,105,119,105,119 is /\/\/\/.

Sample Input 3

4
1 1 1 1

Sample Output 3

2

The elements of the sequence 1,1,1,1 are all the same, so it is not /\/\/\/.



Sample input:
4
3 1 3 2


Sample output:
1

Submission status: Runtime Error

Solution code:

うまい寿司が食いたい。
うまい寿司が遠慮なく食べれるようになるまで，進捗とか垂れ流すブログ
201809-30
ABC111で学んだこと。
ABC 競技プログラミング
昨日(2018/9/29)行われた，ABC111に参加した。
ただ，集中力が散漫でレートが落ちてしまったので，きっちり復習したいと思います。

AtCoder Beginner Contest 111 - AtCoder

以下，学んだことをまとめます。

A問題
猫のすぬけは文字を書く練習をしています。 すぬけは今日、数字の 1 と 9 を書く練習をしていたのですが、 間違えて 1 と 9 をあべこべに書いてしまいました。
すぬけが書いた 3桁の整数nが与えられます。 
nに含まれる 1 という桁をそれぞれ 9 に、 9 という桁をそれぞれ 1 に置き換えて得られる整数を出力してください。

https://beta.atcoder.jp/contests/abc111/tasks/abc111_a

要するに，三桁の整数の9と１を入れ替えてくださいという問題

僕の回答はかなり間に合わせ的な回答で，

N = str(input())
print(N.replace('1','4').replace('9','1').replace('4','9'))
pythonの組み込み関数であるreplaceでとりあず，1を適当な数字（ここでは４）に入れ替えて，9を1に入れ替えました。
そして，最後に適当な数字を9に入れ替えるという方法を取りました。

ACになったコードを提出順にしてみて見てみます。

d={'1':'9', '9':'1'}
print(''.join(d[c] for c in input()))
kyunaさんの回答

1を9，9を1にする辞書を作っておいて，inputをkeyとして読み取る方法でした。
join関数の使い方をよく把握してなかったので，これは勉強になりました。

l=list(input())
for i in range(len(l)):
    if(l[i]=='9'):
        print(1,end="")
    else:
        print(9,end="")
ankush_sharma_GL さんの回答

for文とif文を組み合わせれば良いというのと，最後の改行をなくすために，end=""を入れればよいということがわかりました。

for文とif文を組み合わせるのと，join関数を使う方法として，

a = list(input())
for i in range(3):
    if a[i] == "1":
        a[i] = "9"
    else:
        a[i] = "1"
print("".join(a))
RyoTeiさんの回答
というものもありました。そのままだと，listオブジェクトになるので，joinが必要なんですね。よくわかりました。

賢いな，と思った回答としては，

n=int(input())
print(1110-n)
aytkdkさんの回答
がありました。これは本当に賢いと思います。

B問題
黒橋君は，AtCoder Beginner Contest (ABC) にまだ参加したことがありません．
次に行われる ABC は第 N 回です． 黒橋君は，初めて参加する ABC を第 x 回としたときに，x の十進法表記でのすべての桁の数字が同じであるようにしたいです．
黒橋君が初めて参加する ABC としてふさわしいもののうち，最も早いものは第何回でしょうか？

ゾロ目の大会に参加したい，という要請になります。 僕の回答は，if文の仕様がなぜかごっちゃになって冗長なコードになっていました。 いまから思えば，もっと簡単にかける気がしています。

n = input()

if int(n[0]) <= int(n[1]):
    if int(n[0]) == int(n[1]) and int(n[0]) >= int(n[2]):
        temp=int(n[0])
        print(temp*100+temp*10+temp)
    else:
        temp=int(n[0])+1
        print(temp*100+temp*10+temp)
else:
    temp=int(n[0])
    print(temp*100+temp*10+temp)
僕の回答 だいぶ反省をしています。

n = int(input())

a = -(-n//111)

print(a*111)
tokuさんの回答
多分これが正解なんじゃないでしょうか？
111で割って切り上げて，その値を111倍する。シンプルかつわかりやすいです。

切り捨てを使う方法として

n = int(input())
print(111 * (int((n-1)/111)+1))
minefyさんの回答
がありました。

この辺りを参考に，切り捨て・切り上げのことは頭に置いておきます。

C問題
数列 a1, a2,..,an が以下の条件を満たすとき、 /\/\/\/ と呼ぶことにします。
- 各 i=1,2, ...,n−2 について、ai=ai+2
- 数列に現れる数はちょうど 2 種類
偶数長の数列 v1,v2,...,vn が与えられます。 要素をいくつか書き換えることでこの数列を /\/\/\/ にしたいです。 
書き換える要素の数は最小でいくつになるか求めてください。

回答できませんでした。

import collections

n = int(input())
v = list(map(int, input().split()))

if len(set(v)) == 1:
    print(int(n/2))

else:
    odd = v[0::2]
    even = v[1::2]
    if len(set(odd)) > 1:
        odd_c = collections.Counter(odd).most_common()[1:]
        values, odd_counts = zip(*odd_c)
        odd_num=sum(odd_counts)
    else:
        odd_num=0
        
    if len(set(even)) > 1:
        even_c = collections.Counter(even).most_common()[1:]
        values, even_counts = zip(*even_c)
        even_num=sum(even_counts)
    else:
        even_num=0
        
    print(odd_num+even_num)
僕の回答

これでWAでした。
理由は簡単で，最も多く出てくる数が同じ場合を考えてなかったためです。
例
1 2 1 2 1 1 2 1 3 1
このときに両者ともにすべての数字を1に変えるような操作の数を出力するようにしています。
コードも冗長であまりよろしくなさそうです。

さて，正解のコードを見る前に実装しながら学んだことを書いておきます。 まず

import collections
これを学びました。参考：ABCを解きながらググったサイト, 便利と書いていたQiitaの記事
具体的な中身は参考のサイトを見ればよいのですが，このcollections.Counter()関数を使うことで，リスト内に出てくる数のカウントをしてくれます。
ただ，このままですと出てきた順にしか出力されないので，.most_common()をつけてあげることで，頻度順に並びます。大変便利ですね。

次に，

 odd = v[0::2]
 even = v[1::2]
このリストの書き方です。
１つ目の引数から，２つ目の引数だけスキップして読み取ることができます。
これのお陰で，偶数リスト，奇数リストの作成が簡単にできました。

ここまでで，

偶数，奇数番目だけのリストを作成することができる。
リスト内の要素を頻度順に出すことができる。
ようになりました。

これらを使ってどのように正解を導いているのか正答を見ていきます。

from collections import Counter


def solve(V):
    n = len(V)
    ac = Counter(V[::2]).most_common(2)
    bc = Counter(V[1::2]).most_common(2)

    if ac[0][0] != bc[0][0]:
        return n - ac[0][1] - bc[0][1]
    else:
        if len(bc) == 1 or len(ac) == 1:
            return n // 2
        else:
            return n - max(ac[0][1] + bc[1][1], ac[1][1] + bc[0][1])


if __name__ == "__main__":
    n = int(input())
    l = input()
    print(solve(l.split(" ")))
mitsuo0114さんの回答
ソートして，現時点で一番速いものを選びました。

most_common(n)でn番目までの要素を出してくれます。
今回の問題では「奇数番目の最頻値=偶数番目の最頻値」のときに二番目に出てくる要素の数を知る必要があるので，most_common(2)まで書けばよかったんですね。

次に，if文は三通りに分かれています

    if ac[0][0] != bc[0][0]:
        return n - ac[0][1] - bc[0][1]
hoge.most_common()[0][0]は，「最頻値が何か」
hoge.most_common()[0][1]は，「最頻値が何回出てきたか」
を出してくれます。

つまり上のコードでは，最頻値が同じでない場合に，全体から偶数のリストと奇数のリストの最頻値の数を引いています。
これで，入れ替えるべき数がわかるんですね。

    else:
        if len(bc) == 1 or len(ac) == 1:
            return n // 2
最頻値の数が同じとき，偶数リストと奇数リストの数字が完全に同じときに，こちらの数を返すようにしています。

        else:
            return n - max(ac[0][1] + bc[1][1], ac[1][1] + bc[0][1])
 ```
最後のelse文です。ここの解読に一番時間がかかりました。<br>
 - 偶数リストの最頻値と奇数リストの二番目の頻度で出てくる値の和
 - 偶数リストの二番目の頻度で出てくる値と奇数リストの最頻値の和
を取っています。<br>

この和の大きいほうが，入れ替えなくても良い数を最大化するものですので，`max()`関数を使うことで回答になります。<br>

読むと納得できますね。

# D問題

たどり着かなかったので，今回はありません。
Leo0523 292日前

Add Star
    
関連記事
 StanとRでベイズ統計モデリング,　４章の計算をしてみた
2019-01-13
StanとRでベイズ統計モデリング, ４章の計算をしてみた
概要 StanとRでベイズ統計モデリングの4章のベイズ信頼区間と予…
 FORM -first order reliability method- 近似的に公差解析を行う方法　① 導入　FORMって何？
2018-06-29
FORM -first order reliability method- 近似的に公差解析を行う方…
公差解析の方法の一つFORM (First Order Reliability Method)に…
« CUDAのインストール〜Jupyter Notebookへ…
ニンジンのポタージュ »
プロフィール
 id:Leo0523
id:Leo0523
読者になる 1
検索
記事を検索
リンク
はてなブログ
ブログをはじめる
週刊はてなブログ
はてなブログPro
最新記事
ベイズ線形回帰
StanとRでベイズ統計モデリング,　４章の計算をしてみた
reについて
Autler-Townes効果について
Dask メモリにのらない大規模なcsvデータの取扱について
月別アーカイブ
▶ 2019 (2)
▼ 2018 (12)
2018 / 12 (2)
2018 / 11 (2)
2018 / 10 (2)
2018 / 9 (1)
2018 / 8 (3)
2018 / 7 (1)
2018 / 6 (1)
はてなブログをはじめよう！
Leo0523さんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか？

はてなブログをはじめる（無料）
はてなブログとは
 うまい寿司が食いたい。 うまい寿司が食いたい。
Powered by Hatena Blog | ブログを報告する

Submission status: Runtime Error

Solution code:
from collections import Counter

n = int(input())
v = list(map(int, input().split()))

odd = v[::2]
even = v[1::2]

odd_c = Counter(odd).most_common(2)
even_c = Counter(even).most_common(2)

if len(set(v)) == 1:
    print(int(v/2))
else:
    if odd_c[0][1] != even_c[0][1]:
        print(n-odd_c[0][1]-even_c[0][1])
    else:
        print(n-max(odd_c[0][1]-even_c[1][1], odd_c[1][1]-even_c[0][1]))

Submission status: Runtime Error

Solution code:
n=int(input())
x=list(map(int,input().split()))

import collections as col

x_e=[]
x_o=[]

for i in range(n):
	if i%2==0:
		x_e.append(x[i])
	else:
		x_o.append(x[i])

x_e_c=col.Counter(x_e).most_common()    
x_o_c=col.Counter(x_o).most_common()

if x_e_c[0][1]>x_o_c[0][1]:
	fst=x_e_c
	snd=x_o_c
else:
	if x_e_c[0][1]<x_o_c[0][1]:	
		fst=x_o_c
		snd=x_e_c
	else:
		if x_e_c[1][1]<=x_o_c[1][1]:	
			fst=x_e_c
			snd=x_o_c
		else:
			fst=x_o_c
			snd=x_e_c

res=0

res+=n//2-fst[0][1]
if fst[0][0]!=snd[0][0]:
	res+=n//2-snd[0][1]
else:
	if len(snd)>1:
		res+=n//2-snd[1][1]
	else:
		res+=n//2

print(res)

Submission status: Runtime Error

Solution code:
n=int(input())
x=list(map(int,input().split()))

import collections as col

x_e=[]
x_o=[]

for i in range(n):
	if i%2==0:
		x_e.append(x[i])
	else:
		x_o.append(x[i])

x_e_c=col.Counter(x_e).most_common()    
x_o_c=col.Counter(x_o).most_common()

if x_e_c[0][1]>x_o_c[0][1]:
	fst=x_e_c
	snd=x_o_c
else:
	if x_e_c[0][1]<x_o_c[0][1]:	
		fst=x_o_c
		snd=x_e_c
	else:
		if x_e_c[1][1]<=x_o_c[1][1]:	
			fst=x_e_c
			snd=x_o_c

res=0

res+=n//2-fst[0][1]
if fst[0][0]!=snd[0][0]:
	res+=n//2-snd[0][1]
else:
	if len(snd)>1:
		res+=n//2-snd[1][1]
	else:
		res+=n//2

print(res)

Submission status: Runtime Error

Solution code:
def main():
    n = int(input())
    *v, = map(int, input().split())

    v0 = assemble(v[::2])
    v1 = assemble(v[1::2])

    if len(v0) == 1 and len(v1) == 1:
        if v0[0][0] == v1[0][0]:
            print(n // 2)
        else:
            print(0)
        return
    elif len(v0) == 1:
        if v0[0][0] == v1[0][0]:
            print(sum_v(v1, 0))
        else:
            print(sum_v(v1, 1))
        return
    elif len(v1) == 1:
        if v0[0][0] == v1[0][0]:
            print(sum_v(v0, 0))
        else:
            print(sum_v(v0, 1))

    score = [[0, 0], [0, 0]]
    for i in range(2):
        for j in range(2):
            score[i][j] = sum_v(v0, i) + sum_v(v1, j)
            if v0[i][0] == v1[j][0]:
                score[i][j] = 10 ** 9
    print(min([min(s) for s in score]))


def assemble(v):
    dct = {}
    for vel in v:
        if vel in dct:
            dct[vel] += 1
        else:
            dct[vel] = 1
    return sorted(list(dct.items()), key=lambda x: x[1], reverse=True)


def sum_v(v, ii):
    return sum([vv[1] for i, vv in enumerate(v) if i != ii])


main()

Submission status: Runtime Error

Solution code:
N = int(input())
V = list(map(int, input().split()))

odd = {}
even = {}

for idx in range(N):
  if idx%2 == 0:
    if V[idx] in even:
      even[V[idx]] += 1
    else:
      even[V[idx]] = 1
  else:
    if V[idx] in odd:
      odd[V[idx]] += 1
    else:
      odd[V[idx]] = 1
sorted_odd = sorted(odd.items(), key=lambda x: -x[1])
sorted_even = sorted(even.items(), key=lambda x: -x[1])
fs_odd = sorted_odd[0][0]
fs_even = sorted_even[0][0]
if fs_odd == fs_even:
  elif sorted_odd[0][1] > sorted_even[0][1]:
    fs_even = sorted_even[1][0]
    print(N-odd[fs_odd]-even[fs_even])
  else:
    fs_odd = sorted_odd[1][0]
    print(N-odd[fs_odd]-even[fs_even])
else:
  print(N-odd[fs_odd]-even[fs_even])

Submission status: Runtime Error

Solution code:
N = int(input())
V = list(map(int, input().split()))

odd = {}
even = {}

for idx in range(N):
  if idx%2 == 0:
    if V[idx] in even:
      even[V[idx]] += 1
    else:
      even[V[idx]] = 1
  else:
    if V[idx] in odd:
      odd[V[idx]] += 1
    else:
      odd[V[idx]] = 1
sorted_odd = sorted(odd.items(), key=lambda x: -x[1])
sorted_even = sorted(even.items(), key=lambda x: -x[1])
fs_odd = sorted_odd[0][0]
fs_even = sorted_even[0][0]
if fs_odd == fs_even:
  elif sorted_odd[0][1] > sorted_even[0][1]:
    fs_odd = sorted_odd[0][0]
    print(N-odd[fs_odd]-even[fs_even])
  else:
    fs_even = sorted_even[0][0]
    print(N-odd[fs_odd]-even[fs_even])
else:
  print(N-odd[fs_odd]-even[fs_even])

Submission status: Runtime Error

Solution code:
import collections

n = int(input())
v = list(map(int, input().split()))

s = len(set(v))
if s == 1:
    print(n // 2)
    exit()

odd = v[::2]
even = v[1::2]
mo = collections.Counter(odd).most_common()[0]
mo2 = collections.Counter(odd).most_common()[1]
me = collections.Counter(even).most_common()[0]
me2 = collections.Counter(even).most_common()[1]

if mo[0] == me[0]:
    if me2[1] < mo2[1]:
        mo = mo2
    else:
        me = me2
print(abs((n // 2) - mo[1]) + abs((n // 2) - me[1]))

Submission status: Runtime Error

Solution code:
N = int(input())
V = list(map(int, input().split()))

odd = {}
even = {}

for idx in range(N):
  if idx%2 == 0:
    if V[idx] in even:
      even[V[idx]] += 1
    else:
      even[V[idx]] = 1
  else:
    if V[idx] in odd:
      odd[V[idx]] += 1
    else:
      odd[V[idx]] = 1
sorted_odd = sorted(odd.items(), key=lambda x: -x[1])
sorted_even = sorted(even.items(), key=lambda x: -x[1])
fs_odd = sorted_odd[0][0]
fs_even = sorted_even[0][0]
if fs_odd == fs_even:
  if sorted_odd[1][1] > sorted_even[1][1]:
    fs_odd = sorted_odd[1][0]
    print(N-odd[fs_odd]-even[fs_even])
  else:
    fs_even = sorted_even[1][0]
    print(N-odd[fs_odd]-even[fs_even])
else:
  print(N-odd[fs_odd]-even[fs_even])

Submission status: Runtime Error

Solution code:
N = int(input())
V = list(map(int, input().split()))

odd = {}
even = {}

for idx in range(N):
  if idx%2 == 0:
    if V[i] in even:
      even[V[i]] = 1
    else:
      even[V[i]] += 1
  else:
    if V[i] in odd:
      odd[V[i]] = 1
    else:
      odd[V[i]] += 1
print(N-max(odd.values)-max(even.values))

Submission status: Runtime Error

Solution code:
n=int(input())
l=input().split()
a={}
for i in range(0,len(l),2):
    if l[i] in a:
        a[l[i]]+=1
    else:
        a[l[i]]=1
b={}  
for i in range(1,len(l),2):
    if l[i] in b:
        b[l[i]]+=1
    else:
        b[l[i]]=1
a = sorted(a.items(), key=lambda x:-x[1])
b = sorted(b.items(), key=lambda x:-x[1])
if a[0][0]==b[0][0]:
    m=max(a[0][1]+b[1][1],a[1][1]+b[0][1])
else:
    m=a[0][1]+b[0][1]
print(n-m)

Submission status: Runtime Error

Solution code:
#!/usr/bin/env python3
#ABC111 C

from operator import itemgetter
n = int(input())
v = list(map(int,input().split()))

s = []
t = []
for i in range(n):
    if i % 2 == 0:
        s.append(v[i])
    else:
        t.append(v[i])

ss = list(set(s))
tt = list(set(t))

sc = []
tc = []
for i in range(len(ss)):
    sc.append([ss[i],s.count(ss[i])])
    tc.append([tt[i],t.count(tt[i])])
sc.sort(key = itemgetter(1))
tc.sort(key = itemgetter(1))
if sc[-1][0] == tc[-1][0]:
    if len(sc) == 1 and len(tc) == 1:
        print(n - sc[-1][1])
    elif len(sc) == 1 and len(tc) != 1:
        print(n - sc[-1][1] - tc[-2][1])
    elif len(sc) != 1 and len(tc) == 1:
        print(n - sc[-2][1] - tc[-1][1])
    else:
        ma = max(sc[-2][1],tc[-2][1])
        print(n - sc[-1][1] - ma)
else:
    print(n - sc[-1][1] - tc[-1][1])

Submission status: Runtime Error

Solution code:
import collections
N=int(input())
L=list(map(int,input().split()))
E=[i for i in L[::2]]
O=[i for i in L[1::2]]
e = collections.Counter(E).most_common()
o = collections.Counter(O).most_common()
if e[0][0] != o[0][0]:
    print(N - e[0][1] - o[0][1])
else:
    if len(e) == 1 or len(o) == 1:
        print(N // 2)
    else:
        a = n - e[1][1] - o[0][1]
        b = n - e[0][1] - o[1][1]
        print(min(a, b))

Submission status: Runtime Error

Solution code:
import collections
N=int(input())
L=list(map(int,input().split()))
E=[i for i in L[::2]]
O=[i for i in L[1::2]]
e = collections.Counter(E).most_common()
o = collections.Counter(O).most_common()
if e[0][0] != o[0][0]:
    print(n - e[0][1] - o[0][1])
else:
    if len(e) == 1 or len(o) == 1:
        print(N // 2)
    else:
        a = n - e[1][1] - o[0][1]
        b = n - e[0][1] - o[1][1]
        print(min(a, b))

Submission status: Runtime Error

Solution code:
import itertools
N=int(input())
L=list(map(int,input().split()))
data=list(set(L))
S=list(itertools.permutations(data, 2))
ans=[]
for s in S:
  p=0
  for i in range(N):
    if i%2==0:
      if s[0]==L[i]:
        p=p
      else:
        p=p+1
    else:
      if s[1]==L[i]:
        p=p
      else:
        p=p+1
  ans.append(p)
print(min(ans))

Submission status: Runtime Error

Solution code:
n = int(input())
v = [int(x) for x in input().split()]
big = 10**5
even = [0] * big
odd = [0] * big
for i in range(big):
    even[i] = [0] * 2
    odd[i] = [0]*2
    even[i][1] = i
    odd[i][1] = i

for j in range(n):
    if j % 2 == 0:
        even[v[j]][0] += 1
    else:
        odd[v[j]][0] += 1

even = sorted(even, reverse=True)
odd = sorted(odd, reverse=True)

ans = 0
if even[0][1] == odd[0][1]:
    ans = min(n - odd[0][0] - even[1][0], n - even[0][0] - odd[1][0])
else:
    ans = n - even[0][0] - odd[0][0]
print(ans)

Submission status: Runtime Error

Solution code:
n = int(input())
v = [int(x) for x in input().split()]
even = [0] * (10 ** 5)
odd = [0] * (10 ** 5)
for i in range(10 ** 5):
    even[i] = [0] * 2
    odd[i] = [0]*2
    even[i][1] = i
    odd[i][1] = i

for j in range(n):
    if j % 2 == 0:
        even[v[j]][0] += 1
    else:
        odd[v[j]][0] += 1

even = sorted(even, reverse=True)
odd = sorted(odd, reverse=True)
ans = 0
if even[0][1] == odd[0][1]:
    if even[0][0] > odd[0][0]:
        ans = n - even[0][0] - odd[1][0]
    else:
        ans = n - odd[0][0] - even[1][0]
else:
    ans = n-even[0][0]-odd[0][0]
print(ans)

Submission status: Runtime Error

Solution code:
n = int(input())
v = [int(x) for x in input().split()]
even = [0] * (10 ** 5)
odd = [0] * (10 ** 5)
for i in range(10 ** 5):
    even[i] = [0] * 2
    odd[i] = [0]*2
    even[i][1] = i
    odd[i][1] = i

for j in range(n):
    if j % 2 == 0:
        even[v[j]][0] += 1
    else:
        odd[v[j]][0] += 1
even = sorted(even, reverse=True)
odd = sorted(odd, reverse=True)
if even[0][1] == odd[0][1]:
    if even[0][0] > odd[0][0]:
        ans = n - even[0][0] - odd[1][0]
    else:
        ans = n - odd[0][0] - even[1][0]
else:
    ans = n-even[0][0]-odd[0][0]
print(ans)

Submission status: Runtime Error

Solution code:
import itertools
from collections import Counter

n = int(input())

v = list(map(int, input().split()))

e = v[0::2]
o = v[1::2]


ec = Counter(e)
oc = Counter(o)
em = ec.most_common()
om = oc.most_common()

count = 0

if em[0][0] != om[0][0] :
    count = n - em[0][1] - om[0][1]
elif em[0][1] >= om[0][1]:
    count = n - em[0][1] - oc[1][1]
else:
    count = n - om[0][1] - ec[1][1]


print(count)

Submission status: Runtime Error

Solution code:
n = int(input())
ls = [int(i) for i in input().split()]


from collections import defaultdict
d1 = defaultdict(int)
d2 = defaultdict(int)

for i in range(n):
    if i%2==0:
        d1[ls[i]]+=1
    else:
        d2[ls[i]]+=1


d1=sorted(d1.items())
d2=sorted(d2.items())


if d1[0][0] != d2[0][0]:
    print(n-d1[0][1]-d2[0][1])
else:
    if len(d1)==1 and len(d2)==1:
        print(min(n-d1[0][1],n-d2[0][1]))
    elif:len(d1)==1 and len(d2)==2:
        print(min(n-d1[0][1]-d2[1][1],n-d2[0][1]))
    elif len(d1)==2 and len(d2)==1:
        print(min(n-d1[1][1]-d2[0][1],n-d1[0][1]))
    else:
        print(min(n-d1[1][1]-d2[0][1],n-d1[0][1]-d2[1][1]))

Submission status: Runtime Error

Solution code:
n = int(input())
ls = [int(i) for i in input().split()]


from collections import defaultdict
d1 = defaultdict(int)
d2 = defaultdict(int)

for i in range(n):
    if i%2==0:
        d1[ls[i]]+=1
    else:
        d2[ls[i]]+=1


d1=sorted(d1.items())
d2=sorted(d2.items())


if d1[0][0] != d2[0][0]:
    print(n-d1[0][1]-d2[0][1])
else:
    if len(d1)==1 and len(d2)==2:
        print(min(n-d1[0][1]-d2[1][1],n-d2[0][1]))
    elif len(d1)==2 and len(d2)==1:
        print(min(n-d1[1][1]-d2[0][1],n-d1[0][1]))
    else:
        print(min(n-d1[1][1]-d2[0][1],n-d1[0][1]-d2[1][1]))

Submission status: Runtime Error

Solution code:
from collections import Counter


n = int(input())
lst_v = list(map(int, input().split()))


if len(set(lst_v)) == 1:
    ans = n // 2
else:
    lst_odd = lst_v[::2]
    lst_even = lst_v[1::2]
    cnt_odd = sorted(Counter(lst_odd).items(), key=lambda x: -x[1])
    cnt_even = sorted(Counter(lst_even).items(), key=lambda x :-x[1])
    o1 = cnt_odd[0]
    e1 = cnt_even[0]
    o2 = cnt_odd[1] if cnt_odd[1] else (0, 0)
    e2 = cnt_even[1] if cnt_even[1] else (0, 0)

    if o1[0] == e1[0]:
        rem_number = max(o1[1] + e2[1], o2[1] + e1[1])
    else:
        rem_number = o1[1] + e1[1]
    sum_odd = sum(t[1] for t in cnt_odd)
    sum_even = sum(t[1] for t in cnt_even)
    ans = sum_odd + sum_even - rem_number


print(ans)

Submission status: Runtime Error

Solution code:
from collections import Counter
n=int(input())
nums=list(map(int,input().split()))
a=set(nums)
if len(a)==1:
  print(n//2)
else:
  odd=nums[::2]
  even=nums[1::2]
  o=Counter(odd)
  e=Counter(even)
  ans=n-o.most_common()[0][1]-e.most_common()[0][1]
  if o.most_common()[0][0]==e.most_common()[0][0]:
    print(ans+min(o.most_common[1][1]-o.most_common[0][1],e.most_common[1][1]-e.most_common[0][1]))
  else:  
    print(ans)

Submission status: Runtime Error

Solution code:
from collections import Counter
n=int(input())
nums=list(map(int,input().split()))
a=set(nums)
if len(a)==1:
  print(n//2)
else:
  odd=nums[::2]
  even=nums[1::2]
  o=Counter(odd)
  e=Counter(even)
  ans=n-o.most_common()[0][1]-e.most_common()[0][1]
  if o.most_common[0][0]==e.most_common[0][0]:
    print(ans+min(o.most_common[1][1]-o.most_common[0][1],e.most_common[1][1]-e.most_common[0][1]))
  else:  
    print(ans)

Submission status: Runtime Error

Solution code:
n = int(input())
import numpy as np
v = np.array(list(map(int, input().split())))

d = {s:0 for s in set(v)}
for i in v:
  d[i] += 1
top2 = sorted(d.items(),key=lambda x:-x[1])[:2]
a,b = top2[0][0],top2[1][0]
base = [i%2 for i in range(n)]
alist = np.array([a if i else b for i in base])
blist = np.array([b if i else a for i in base])
print(n-max(sum(alist == v),sum(blist == v)))

Submission status: Runtime Error

Solution code:
import collections

n=int(input())
v=list(map(int,input().split()))
v1=collections.Counter(v[0::2])
v2=collections.Counter(v[1::2])

if len(set(v)) == 1:
    ans=len(v[1::2])
else:
    if len(v1.most_common())==1:
        v1.append((0,0))
    if len(v2.most_common())==1:
        v2.append((0,0))
    ans=min(len(v) - v1.most_common()[0][1] - v2.most_common()[0][1],len(v) - v1.most_common()[0][1] - v2.most_common()[1][1],len(v) - v1.most_common()[1][1] - v2.most_common()[0][1])

print(ans)

Submission status: Runtime Error

Solution code:
n=int(input())
v=list(map(int,input().split()))
v1=v[0::2]
v2=v[1::2]

print((len(v1)-v1.most_common()[0][1]) + (len(v2)-v2.most_common()[0][1]))

Submission status: Runtime Error

Solution code:
n = int(input())
ls = [int(i) for i in input().split()]


from collections import defaultdict
d1 = defaultdict(int)
d2 = defaultdict(int)

for i in range(n):
    if i%2==0:
        d1[ls[i]]+=1
    else:
        d2[ls[i]]+=1


d1=sorted(d1.items(),reverse=True)
d2=sorted(d2.items(),reverse=True)


if d1[0][0] != d2[0][0]:
    print(n-d1[0][1]-d2[0][1])
else:
    try:
        print(min(n-d1[1][1]-d2[0][1],n-d1[0][1]-d2[1][1]))
    except:
        print(min(n-d1[0][1],n-d2[0][1])

Submission status: Runtime Error

Solution code:
import math,string,itertools,fractions,heapq,collections,re,array,bisect,sys,random,time

sys.setrecursionlimit(10**7)
inf=10**20
mod=10**9+7

def LI(): return list(map(int,input().split()))
def I(): return int(input())
def LS(): return input().split()
def S(): return input()

def main():
  n=I()
  l=LI()

  l1=[]
  l2=[]

  f=True
  for x in l:
    if f:
      f=False
      l1.append(x)
    else:
      f=True
      l2.append(x)

  l1.sort()
  l2.sort()

  l3=[]
  l4=[]

  a=l1[0]
  c=1
  for x in l1[1:]:
    if a==x:
      c+=1
    else:
      l3.append([a,c])
      a=x
      c=1
  l3.append([a,c])

  a=l2[0]
  c=1
  for x in l2[1:]:
    if a==x:
      c+=1
    else:
      l4.append([a,c])
      a=x
      c=1
  l4.append([a,c])

  l3=sorted(l3,key=lambda x:x[1],reverse=True)
  l4=sorted(l4,key=lambda x:x[1],reverse=True)

  print(l3)
  print(l4)

  if l3[0][0]==l4[0][0]:
    if len(l3)==1:
      return n-l3[0][1]-l4[1][1]
    elif len(l4)==1:
      return n-l3[1][1]-l4[0][1]
    else:
      return min(n-l3[0][1]-l4[1][1],n-l3[1][1]-l4[0][1])
  else:
    return n-l3[0][1]-l4[0][1]

print(main())

Submission status: Runtime Error

Solution code:
import collections

def CountElements(l):
    collection = collections.Counter(l)    
    return max(collection.values())

n = int(input())
v = [input().split()]

veven = []
vodd = []

for i in range(n):
    if i % 2 == 0:
        veven.append(v[i])
    else:
        vodd.append(v[i])

even = CountElements(veven)
odd = CountElements(vodd)

ans = len(veven) - even + len(vodd) - odd
print(ans)

Submission status: Runtime Error

Solution code:

while True:
    #print(v)
    
    if len(set(v)) == 1:
        cnt = n//2 if n%2 == 0 else (n-1)//2
        break
    
    for i in range(n-2):
        if v[i] != v[i+2]:
            v[i+2] = v[i]
            cnt += 1
    
    
    
    #条件check
    if len(set(v)) == 2:
        flag = True
        for i in range(n-2):
            if v[i] != v[i+2]:
                flag = False
                break
            
        if flag:
            break
    
    cnt += 1
        
print(cnt)

Submission status: Runtime Error

Solution code:

n = input()

v = list(map(int,input().split()))

eve = []
odd = []

for i in range(len(v)):

    if (i % 2 == 1):
        eve.append(v[i])
    else:
        odd.append(v[i])

dic_o = {}
dic_e = {}

dic_o[-1] = 0
dic_e[-1] = 0
#print (dic_o)

for i in odd:

    if ( i in dic_o.keys() ):
        dic_o[i] += 1
    else:
        dic_o[i] = 1


for i in eve:

    if ( i in dic_e.keys() ):
        dic_e[i] += 1
    else:
        dic_e[i] = 1

omax = -1
emax = -1
bul = True

while bul:

    for i in dic_o:
        
        if omax < 0:
            omax = i
        
        elif dic_o[i] > dic_o[omax] :
            omax = i

    for i in dic_e:

        if emax < 0:
            emax = i
        
        elif dic_e[i] > dic_e[emax] :
            emax = i

    if omax != emax :
        bul = False

    else:

        print(dic_o,dic_e)
        
        flag = True
        
        for i in dic_e:
            if dic_e[i] == dic_e[emax] and i != emax:
                emax = i
                flag = False

        if flag:
            for i in dic_o:
                if dic_o[i] == dic_o[emax] and i != omax:
                    omax = i
                    flag = False

        if flag:
        
            if dic_o[omax] > dic_e[emax]:
        
                dic_e.pop(emax)
                emacs = -1

            else:

                dic_o.pop(omax)
                emacs = -1

    
emax_n = dic_e[emax]
omax_n = dic_o[omax]

#print (dic_o,dic_e)
#print (omax,emax)
print ( (len(odd) - omax_n) + (len(eve) - emax_n))

Submission status: Runtime Error

Solution code:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys

input = sys.stdin.readline

def main():
    N = int(input())
    S = list(map(int, input().split()))
    odd = {}
    even = {}
    for i in range(N):
        if i % 2 == 0:
            if S[i] not in even:
                even[S[i]] = 1
            else:
                even[S[i]] += 1
        else:
            if S[i] not in odd:
                odd[S[i]] = 1
            else:
                odd[S[i]] += 1

    n = 1000000000
    even_max1 = None
    even_max2 = None
    for ek, ev in even.items():
        if even_max1 is None:
            even_max1 = ek
        elif even_max2 is None:
            even_max2 = ek
        elif ev > even[even_max1]:
            even_max1 = ek
        elif ev > even[even_max2]:
            even_max2 = ek

    odd_max1 = None
    odd_max2 = None
    for ok, ov in odd.items():
        if odd_max1 is None:
            odd_max1 = ok
        elif odd_max2 is None:
            odd_max2 = ok
        elif ov > odd[odd_max1]:
            odd_max1 = ok
        elif ov > odd[odd_max2]:
            odd_max2 = ok

    n = min(n, N - even[even_max1] - odd[odd_max1] if even_max1 != odd_max1 else
            N - max(even[even_max1], odd[odd_max1]))
    if even_max2 is not None:
        n = min(n, N - even[even_max1] - odd[odd_max2] if even_max1 != odd_max2 else
                N - max(even[even_max1], odd[odd_max2]))
        n = min(n, N - even[even_max2] - odd[odd_max1] if even_max2 != odd_max1 else
                N - max(even[even_max2], odd[odd_max1]))
        n = min(n, N - even[even_max2] - odd[odd_max2] if even_max2 != odd_max2 else
                N - max(even[even_max2], odd[odd_max2]))

    print(n)

main()

Submission status: Runtime Error

Solution code:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys

input = sys.stdin.readline

def main():
    N = int(input())
    S = list(map(int, input().split()))
    odd = {}
    even = {}
    for i in range(N):
        if i % 2 == 0:
            if S[i] not in even:
                even[S[i]] = 1
            else:
                even[S[i]] += 1
        else:
            if S[i] not in odd:
                odd[S[i]] = 1
            else:
                odd[S[i]] += 1

    n = 1000000000
    even_max1 = None
    even_max2 = None
    for ek, ev in even.items():
        if even_max1 is None:
            even_max1 = ek
        elif even_max2 is None:
            even_max2 = ek
        elif ev > even[even_max1]:
            even_max1 = ek
        elif ev > even[even_max2]:
            even_max2 = ek

    odd_max1 = None
    odd_max2 = None
    for ok, ov in odd.items():
        if odd_max1 is None:
            odd_max1 = ok
        elif odd_max2 is None:
            odd_max2 = ok
        elif ov > odd[odd_max1]:
            odd_max1 = ok
        elif ov > odd[odd_max2]:
            odd_max2 = ov

    n = min(n, N - even[even_max1] - odd[odd_max1] if even_max1 != odd_max1 else
            N - max(even[even_max1], odd[odd_max1]))
    if even_max2 is not None:
        n = min(n, N - even[even_max1] - odd[odd_max2] if even_max1 != odd_max2 else
                N - max(even[even_max1], odd[odd_max2]))
        n = min(n, N - even[even_max2] - odd[odd_max1] if even_max2 != odd_max1 else
                N - max(even[even_max2], odd[odd_max1]))
        n = min(n, N - even[even_max2] - odd[odd_max2] if even_max2 != odd_max2 else
                N - max(even[even_max2], odd[odd_max2]))

    print(n)

main()

Submission status: Runtime Error

Solution code:
from collections import Counter

n = input()
v=list(map(int,input().split()))
a=Counter(v[0::2]).most_common()
b=Counter(v[1::2]).most_common()
a.append([0,0])
b.append([0,0])
if a[0][0]!=b[0][0]:
    print(n-(a[0][1]+b[0][1]))
else:
    print(min(n-(a[1][1]+b[0][1]),n-(a[0][1]+b[1][1])))

Submission status: Runtime Error

Solution code:
import collections


n = int(input())
l = list(map(int, input().split()))

if len(set(l)) == 1:
    print(n//2)
    exit()

leven = [x for x in l[::2]]
lodd  = [x for x in l[1::2]]

ce = collections.Counter(leven)
co = collections.Counter(lodd)
ce = sorted(ce.items(), key=lambda x:x[1])
co = sorted(co.items(), key=lambda x:x[1])

if ce[-1][0] != ce[-1][0]:
	print(n - ce[-1][1] - co[-1][1])
elif ce[-2][1] > co[-2][1]:
    print(n - ce[-2][1] - co[-1][1])
else:
    print(n - ce[-1][1] - co[-2][1])

Submission status: Runtime Error

Solution code:
import collections


n = int(input())
l = list(map(int, input().split()))

if len(set(l)) == 1:
    print(n//2)
    exit()

leven = [x for x in l[::2]]
lodd  = [x for x in l[1::2]]
ce = collections.Counter(leven)
co = collections.Counter(lodd)

ce = sorted(ce.items(), key=lambda x:x[1])
co = sorted(co.items(), key=lambda x:x[1])

if ce[-1][0] != ce[-1][0]:
	print(n - ce[-1][1] - co[-1][1])
elif ce[-2][1] > co[-2][1]:
    print(n - ce[-2][1] - ce[-1][1])
else:
    print(n - ce[-1][1] - ce[-2][1])