每年奧運會各大**都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國**就公布「金牌榜」;而美國的獎牌總數第一,於是美國**就公布「獎牌榜」。如果人口少的國家公布乙個「國民人均獎牌榜」,說不定非洲的國家會成為榜魁…… 現在就請你寫乙個程式,對每個前來諮詢的國家按照對其最有利的方式計算它的排名。
輸入格式:
輸入的第一行給出兩個正整數n和m(≤224,因為世界上共有224個國家和地區),分別是參與排名的國家和地區的總個數、以及前來諮詢的國家的個數。為簡單起見,我們把國家從0 ~ n−1編號。之後有n行輸入,第i行給出編號為i−1的國家的金牌數、獎牌數、國民人口數(單位為百萬),數字均為[0,1000]區間內的整數,用空格分隔。最後面一行給出m個前來諮詢的國家的編號,用空格分隔。
輸出格式:
在一行裡順序輸出前來諮詢的國家的排名:計算方式編號。其排名按照對該國家最有利的方式計算;計算方式編號為:金牌榜=1,獎牌榜=2,國民人均金牌榜=3,國民人均獎牌榜=4。輸出間以空格分隔,輸出結尾不能有多餘空格。
若某國在不同排名方式下有相同名次,則輸出編號最小的計算方式。
輸入樣例:
4451
1001000
36110
3006
1432518
40012
3
輸出樣例:
1:1
1:21
:31:
4
ac碼
#include
intmain()
int contry[m]
;for
(int i=
0; i)for
(int i=
0; i)for
(int j=
0; j)for
(int j=
0; j)for
(int j=
0; j)int number=
1,min=maxgold;
if(min>maxmedal)
if(min>maxpregold)
if(min>maxpremedal)
if(p==1)
putchar
(' ');
else
p=1;
printf
("%d:%d"
,min,number);}
}
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int maxn =
233;
int n, m;
struct node a[maxn]
, b[maxn]
, c[maxn]
, d[maxn]
;bool
cmp1
(node a, node b)
bool
cmp2
(node a, node b)
bool
c***
(node a, node b)
bool
cmp4
(node a, node b)
//bool c***(node a, node b)
//bool cmp4(node a, node b)
intmain()
sort
(a, a+n, cmp1)
;sort
(b, b+n, cmp2)
;sort
(c, c+n, c***)
;sort
(d, d+n, cmp4)
;for
(int i =
0; i < m;
++i)
if(j < id)
break;}
}for
(int j =
0; j < n;
++j)
if(j < id)
break;}
}for
(int j =
0; j < n;
++j)
while
(j >=
1&& c[j]
.d1 == c[j-1]
.d1) j--;if
(j < id)
break;}
}for
(int j =
0; j < n;
++j)
while
(j >=
1&& d[j]
.d2 == d[j-1]
.d2) j--;if
(j < id)
break;}
}printf
("%d:%d"
, id+
1, cc);}
return0;
}
#include
#include
#include
#include
struct jpa[
300]
;int
main()
for(i=
0;i)scanf
("%d"
,&b[i]);
for(i=
0;i)int max=p0,t=1;
//計算重要度排名為金牌,獎牌,人均金牌,人均獎牌
if(maxif(maxif(maxif(i==0)
printf
("%d:%d"
,n-max+
1,t)
;else
printf
(" %d:%d"
,n-max+
1,t)
;//n-max+1為該國家所能拿到的最高名次的排序方式
//t為此方式能夠獲得的最高的排名
}}
#include
using
namespace std;
struct node
q[230];
struct node
w[230];
//用來儲存最後的結果
int a[
230]
;int
cmp1
(node a,node b)
intcmp2
(node a,node b)
intc***
(node a,node b)
intcmp4
(node a,node b)
intmain()
sort
(q,q+n,cmp1)
;for
(int i=
0;i)sort
(q,q+n,cmp2)
;for
(int i=
0;isort
(q,q+n,c***)
;for
(int i=
0;isort
(q,q+n,cmp4)
;for
(int i=
0;ifor(
int i=
0;i)//w結構體陣列記錄每乙個編號的答案
for(
int i=
1;i<=m;i++
) cin>>a[i]
;for
(int i=
1;i)//依次對輸入的編號進行輸出即可
cout<].rank<<
":"<].way
}
#include
#include
#include
using
namespace std;
typedef
struct node
;node x[
100010];
intmain()
for(
int i =
0;i < m; i++
),p,maxx =
225,index;
scanf
("%d"
,&p)
;for
(int j =
0;j < n; j++
)for
(int j =
0;j <
4; j++)}
if(i !=0)
printf
(" ");
printf
("%d:%d"
,maxx,index);}
return0;
}
奧運排行榜(25 分)
這個題目需要注意的乙個地方就是,如果你想排序 那麼查詢就做到o 1 如果查詢用o n 那就不用排序,自己可以選擇下,做到查詢是o 1 比較麻煩需要各種對映才可以做到 每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 ...
7 53 奧運排行榜 (25 分
題目鏈結 每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個程式,對每個前來諮詢的...
7 40 奧運排行榜 25 分
每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個程式,對每個前來諮詢的國家按照對...