採点

题意翻译

题目大意: 高桥君正在编写一份试卷。很不幸的是,他忘记了一个题的正确答案。而他的N个学生用0~M之间的一个整数回答了这个问题。如果有超过一半的学生回答了一个整数X,那么高桥君就认定正确答案是这个整数X。 你会得到这N个学生的回答。如果高桥君打算以X为这道题的正解,那么请输出X。如果他无法以X为这道题的正解,那么请输出"?"(不包括外面的双引号) 输入输出格式: 输入格式: N M A1 A2 A3... AN 第一行是两个用空格隔开的整数N(1≤N≤10^5)和M(1≤M≤10^5) 第二行是用空格隔开的N个学生们的回答。保证每个学生的回答的整数不大于M 。 输出格式: 如果高桥君认定正确答案为某个整数X,输出一个整数X。 否则,输出"?"。**务必在输出结束时输出换行符。**

题目描述

[problemUrl]: https://atcoder.jp/contests/code-festival-2015-qualb/tasks/codefestival_2015_qualB_b 高橋君はテストの結果を採点しています。ところが、高橋君はある問題の正解を忘れてしまいました。この問題は、$ N $ 人が解答していて、それぞれの人の答えは $ 0 $ 以上 $ M $ 以下の整数でした。高橋君は、半分を超える人が同じ答えだった場合、それを正解とすることにしました。 $ N $ 人のこの問題に対する解答が与えられるので、高橋君は何を正解とするか出力してください。ただし、高橋君が正解を決められない場合、`?` を出力してください。

输入输出格式

输入格式


入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $ $ A_1 $ $ A_2 $ ... $ A_N $ - $ 1 $ 行目には、$ 2 $ つの整数 $ N\ (1\ ≦\ N\ ≦\ 10^5) $, $ M\ (1\ ≦\ M\ ≦\ 10^5) $ が空白区切りで与えられる。 - $ 2 $ 行目には、$ N $ 個の整数が空白区切りで与えられる。このうち $ i\ (1\ ≦\ i\ ≦\ N) $ 番目には、$ i $ 番目の人の解答を表す整数 $ A_i\ (0\ ≦\ A_i\ ≦\ M) $ が与えられる。

输出格式


高橋君が正解とする整数を $ 1 $ 行に出力せよ。ただし、高橋君が正解を決められない場合、$ 1 $ 行に `?` を出力せよ。出力の末尾に改行を入れること。

输入输出样例

输入样例 #1

3 2
2 1 2

输出样例 #1

2

输入样例 #2

4 2
2 1 2 1

输出样例 #2

?

输入样例 #3

10 1
0 0 0 0 0 0 1 1 1 1

输出样例 #3

0

输入样例 #4

10 5
0 1 2 3 4 5 5 5 5 5

输出样例 #4

?

说明

### 部分点 この問題には部分点が設定されている。 - $ N\ ≦\ 100 $, $ M\ ≦\ 100 $ を満たすデータセットに正解した場合は、$ 40 $ 点が与えられる。 - 追加の制約のないデータセットに正解した場合は、上記とは別に $ 60 $ 点が与えられる。