排序 誰會贏?

2022-08-29 07:45:07 字數 1126 閱讀 2518

題目描述

最近,在課餘時間流行一種遊戲,遊戲的規則如下:遊戲開始時,每個人都從規定範圍內的數中選取乙個數(保證所選取的數各不相同),寫在紙上,握在手中(以防讓別的同學看見),然後同時開啟,如果其中乙個同學手中的數是其他任意兩位同學手中的數之和,那麼他就贏,如果滿足條件的有多個,手中的數最大的那位同學贏。這是心理和智力的雙重考驗,所以參加的學生越來越多,但是,由於參與人數眾多,要判斷誰贏就成了問題,請聰明的你設計乙個程式來解決這個問題!

輸入第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 2

3using

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 }

view code

upc3577誰會贏?(排序)

時間限制 3 sec 記憶體限制 64 mb 題目描述 最近,在課餘時間流行一種遊戲,遊戲的規則如下 遊戲開始時,每個人都從規定範圍內的數中選取乙個數 保證所選取的數各不相同 寫在紙上,握在手中 以防讓別的同學看見 然後同時開啟,如果其中乙個同學手中的數是其他任意兩位同學手中的數之和,那麼他就贏,如...

誰會碰到這麼噁心的問題。。。

今天看乙個程式 從vs2003轉到2010 結果點除錯的時候出現這樣的框框 偵錯程式竟然找不到編譯好的應用程式。還有編譯器提示警告 warning msb8012。在網上找了半天也沒弄出個所以然來,最後,發現這兩個設定有問題 而下面這幅圖的設定也是給應用程式命名。那生成的應用程式到底用的那個名字了?...

誰會挖去「雲」端下的「地雷」

雲計算 時代,我們將面臨新的安全挑戰,我們該如何排掉埋伏在資訊保安底下的 地雷 當你還在對 xx門 表示震驚,擔心自己的終端裝置遭受資訊竊取時,一場以 雲 為名的技術革新,正在謀求將所有計算機資訊和服務網路化。以前,我們的一切操作 儲存動作都發生在終端裝置,網路是乙個目的而非方式。如今,雲計算 卻讓...