結構體排序(ACM俱樂部題號 1812)

2021-08-15 11:57:51 字數 1724 閱讀 6027

輸入:

輸入包含有多組測試資料

第一行給我國家數n和要求排名的國家數m

第二行開始的n行,每行輸入乙個國家的奧運金牌數,獎牌數,人口數。每個國家都有乙個編號,按照輸入的先後順序國家編號從0到n-1

接下來一行給出m個國家編號,按照公升序給出,你需要對這m個國家進行排名

輸出:排名有4種方式:按金牌總數排名、按獎牌總數排名、按金牌人口比例排名、按獎牌人口比例排名。這4種排名方式的序號依次為1,2,3,4,且都是降序排列。

對每個需要進行排名的國家給出最佳排名方式和最終排名,格式:排名:排名方式

如果乙個國家按照不同的排名方式卻有相同的最終排名,則輸出排名方式序號最小的那種排名

如果有多個國家並列排名的情況出現,例如4個國家的金牌數總數為100,90,90,80,則這4個國家按照金牌總數排序的排名為1,2,3,4(注意不是1,2,2,3)

最終的結果按照參與排名的國家的編號公升序輸出,並且每組輸出資料的最後輸出乙個空行

**如下:

#include #include typedef structnation;

nation na[100];

int cmp_0(const void *pa,const void *pb)

int cmp_1(const void *pa,const void *pb)

int cmp_2(const void *pa,const void *pb)

int cmp_3(const void *pa,const void *pb)

int cmp_4(const void *pa,const void *pb)

int main()

//order by total

qsort(na,m,sizeof(na[0]),cmp_1);

for(i=0;i0&&na[i-1].ordervalue[1]==na[i].ordervalue[1])

na[i].order[1]=na[i-1].order[1];

else

na[i].order[1]=i+1;

} //order by gold/pop

qsort(na,m,sizeof(na[0]),cmp_2);

for(i=0;i0&&na[i-1].ordervalue[2]==na[i].ordervalue[2])

na[i].order[2]=na[i-1].order[2];

else

na[i].order[2]=i+1;

} //order by total/pop

qsort(na,m,sizeof(na[0]),cmp_3);

for(i=0;i0&&na[i-1].ordervalue[3]==na[i].ordervalue[3])

na[i].order[3]=na[i-1].order[3];

else

na[i].order[3]=i+1;

} //output the information

qsort(na,m,sizeof(na[0]),cmp_4);

for(i=0;iin2.txt中測試資料為:

4 44 8 1

6 6 2

4 8 2

2 12 4

0 1 2 3

4 28 10 1

8 11 2

8 12 3

8 13 4

0 3

數制轉換(ACM俱樂部題號 1942)

題目描述 求任意兩個不同進製非負整數的轉換 二進位製到十六進製制 所給整數在long所能表達的範圍之內。不同進製的表示符號為 0,1,9,a,b,f 或者 0,1,9,a,b,f 輸入 輸入包含多組測試資料。每組輸入佔一行,包含3個整數a,n,b。a表示其後的n是a進製整數,b表示欲將a進製整數n轉...

南陽理工ACM263 精 挑 細 選(結構體排序)

時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 小王是公司的倉庫管理員,一天,他接到了這樣乙個任務 從倉庫中找出一根鋼管。這聽起來不算什麼,但是這根鋼管的要求可真是讓他犯難了,要求如下 1 這根鋼管一定要是倉庫中最長的 2 這根鋼管一定要是最長的鋼管中最細的 3 這根鋼管一定...

day 3 acm貪心(sort結構體排序)

點我看原題 今年暑假不ac?是的。那你幹什麼呢?看世界盃呀,笨蛋!確實如此,世界盃來了,球迷的節日也來了,估計很多acmer也會拋開電腦,奔向電視了。作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還會看一些其它的節目,比如新聞聯播 永遠不要忘記關心國家大事 非常6 7 超級女...