7 53 奧運排行榜 (25 分

2021-09-19 05:05:50 字數 1888 閱讀 5965

題目鏈結

每年奧運會各大**都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國**就公布「金牌榜」;而美國的獎牌總數第一,於是美國**就公布「獎牌榜」。如果人口少的國家公布乙個「國民人均獎牌榜」,說不定非洲的國家會成為榜魁…… 現在就請你寫乙個程式,對每個前來諮詢的國家按照對其最有利的方式計算它的排名。

輸入格式:

輸入的第一行給出兩個正整數n和m(≤224,因為世界上共有224個國家和地區),分別是參與排名的國家和地區的總個數、以及前來諮詢的國家的個數。為簡單起見,我們把國家從0 ~ n−1編號。之後有n行輸入,第i行給出編號為i−1的國家的金牌數、獎牌數、國民人口數(單位為百萬),數字均為[0,1000]區間內的整數,用空格分隔。最後面一行給出m個前來諮詢的國家的編號,用空格分隔。

輸出格式:

在一行裡順序輸出前來諮詢的國家的排名:計算方式編號。其排名按照對該國家最有利的方式計算;計算方式編號為:金牌榜=1,獎牌榜=2,國民人均金牌榜=3,國民人均獎牌榜=4。輸出間以空格分隔,輸出結尾不能有多餘空格。

若某國在不同排名方式下有相同名次,則輸出編號最小的計算方式。

輸入樣例:

4 451 100 1000

36 110 300

6 14 32

5 18 40

0 1 2 3

輸出樣例:

1:1 1:2 1:3 1:4

#include

#include

#include

using namespace std;

struct nodep[

300]

;int n,m,g,j,t,q,mn,pos,nation[

300][5

];bool cmp1

(node a,node b)

bool cmp2

(node a,node b)

bool c***

(node a,node b)

bool cmp4

(node a,node b)

void

solve1

(int index)

nation[p[i]

.id]

[index]

= num;

}return;}

void

solve2

(int index)

nation[p[i]

.id]

[index]

= num;

}return;}

void

solve3

(int index)

nation[p[i]

.id]

[index]

= num;

}return;}

void

solve4

(int index)

nation[p[i]

.id]

[index]

= num;

}return;}

intmain()

sort

(p,p + n,cmp1)

;solve1(1

);sort

(p,p + n,cmp2)

;solve2(2

);sort

(p,p + n,c***)

;solve3(3

);sort

(p,p + n,cmp4)

;solve4(4

);for(

int i =

0;i < m;i++)}

if(i ==0)

else

} cout << endl;

return0;

}

奧運排行榜(25 分)

這個題目需要注意的乙個地方就是,如果你想排序 那麼查詢就做到o 1 如果查詢用o n 那就不用排序,自己可以選擇下,做到查詢是o 1 比較麻煩需要各種對映才可以做到 每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 ...

1 奧運排行榜 25分

每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個程式,對每個前來諮詢的國家按照對...

7 40 奧運排行榜 25 分

每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個程式,對每個前來諮詢的國家按照對...