題目描述
最近,在課餘時間流行一種遊戲,遊戲的規則如下:遊戲開始時,每個人都從規定範圍內的數中選取乙個數(保證所選取的數各不相同),寫在紙上,握在手中(以防讓別的同學看見),然後同時開啟,如果其中乙個同學手中的數是其他任意兩位同學手中的數之和,那麼他就贏,如果滿足條件的有多個,手中的數最大的那位同學贏。這是心理和智力的雙重考驗,所以參加的學生越來越多,但是,由於參與人數眾多,要判斷誰贏就成了問題,請聰明的你設計乙個程式來解決這個問題!
輸入第1行為乙個整數n(3≤n≤50000),表示參加遊戲的總人數,第2行為n個數(範圍在0~2^31之間),依次表示n個同學所選的數,第i個數表示第i位同學所選的數。
輸出只一行,為乙個整數,表示哪位同學贏。如果沒有任何一位同學贏,則輸出「0」。
樣例輸入
5樣例輸出2 5 7 3 13
3提示
100%的資料:n≤50000
根據題目的意思,我們想到把資料從小到大排序,然後從後向前對於每個資料都和它前面的資料進行比較,如果該資料與它前面的差值存在於總資料中,我們就可以結束遍歷,並且答案就是這個資料所對應的人的位置
我們想到利用set中元素不重複的性質來實現遍歷,但我們要注意兩點:1、差值不能和被減數相等;2、被減數不能為0
1 #include 2view code3using
namespace
std;
4 typedef long
long
ll;5
struct
node
6mp[50005];9
bool
cmp(node a,node b)
1013
ll n;
14int
main()
1525 sort(mp,mp+n,cmp);
26bool flag=0;27
for(ll i=n-1;i>=0;i--)
2840
else
4144}45
}46if(!flag)
47 cout<
<
48return0;
49 }
upc3577誰會贏?(排序)
時間限制 3 sec 記憶體限制 64 mb 題目描述 最近,在課餘時間流行一種遊戲,遊戲的規則如下 遊戲開始時,每個人都從規定範圍內的數中選取乙個數 保證所選取的數各不相同 寫在紙上,握在手中 以防讓別的同學看見 然後同時開啟,如果其中乙個同學手中的數是其他任意兩位同學手中的數之和,那麼他就贏,如...
誰會碰到這麼噁心的問題。。。
今天看乙個程式 從vs2003轉到2010 結果點除錯的時候出現這樣的框框 偵錯程式竟然找不到編譯好的應用程式。還有編譯器提示警告 warning msb8012。在網上找了半天也沒弄出個所以然來,最後,發現這兩個設定有問題 而下面這幅圖的設定也是給應用程式命名。那生成的應用程式到底用的那個名字了?...
誰會挖去「雲」端下的「地雷」
雲計算 時代,我們將面臨新的安全挑戰,我們該如何排掉埋伏在資訊保安底下的 地雷 當你還在對 xx門 表示震驚,擔心自己的終端裝置遭受資訊竊取時,一場以 雲 為名的技術革新,正在謀求將所有計算機資訊和服務網路化。以前,我們的一切操作 儲存動作都發生在終端裝置,網路是乙個目的而非方式。如今,雲計算 卻讓...