水呀水 個人賽C題1113

2021-06-21 20:13:37 字數 4058 閱讀 6776



description

某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,每個學生都有3門課的成績:語文、數學、英語。先按總分從高到低排序,如果兩個同學總分相同,再按語文成績從高到低排序,如果兩個同學總分和語文成績都相同,那麼規定學號小的同學 排在前面,這樣,每個學生的排序是唯一確定的。 

任務:先根據輸入的3門課的成績計算總分,然後按上述規則排序,最後按排名順序輸出前五名名學生的學號和總分。注意,在前5名同學中,每個人的獎學金都不相同,因此,你必須嚴格按上述規則排序。例如,在某個正確答案中,如果前兩行的輸出資料(每行輸出兩個數:學號、總分) 是: 

7 279

5 279 

這兩行資料的含義是:總分最高的兩個同學的學號依次是7號、5號。這兩名同學的總分都是 279 (總分等於輸入的語文、數學、英語三科成績之和) ,但學號為7的學生語文成績更高一些。如果你的前兩名的輸出資料是: 

5 279 

7 279 

則按輸出錯誤處理,不能得分。

input

輸入包含

n+1行:

第1行為乙個正整數

n,表示該校參加評選的學生人數。 

第2到n+1行,每行有

3個用空格隔開的數字,每個數字都在o到

100之間z第

1行的3個數

字依次表示學號為

j-1的學生的語文、數學、英語的成績。每個學生的學號按照輸入順序編號為

l~n (

恰好是輸入資料的行號減1)。

output

輸出共有5行,每行是兩個用空格隔開的正整數,依次表示前5名學生的學號和總分。 

sample input

6

90 67 80

87 66 91

78 89 91

88 99 77

67 89 64

78 89 98

sample output

6 265

4 264

3 258

2 244

1 237

看到這題目直覺是要用結構體,因為涉及好幾個量一塊行動,排名一變,學號什麼的也得跟這變,剛開始自己想的是先用sort把總分排序,然後按順序輸出前五個就行,但是題目還有總分一樣的時候按語文和學號排序這個條件,所以要一類一類逐級考慮,也就是最老土最笨的辦法,就是乙個乙個排下去,然後用
term=e[j];
e[j]=e[j+1];
e[j+1]=term;
三句這樣的話將變數逐個交換,當然,假設有多個變數,那麼這個交換工程也是相當龐大的,所以。。。。
這裡插入那個類似的題目和當年年少無知的我的**、、、
description

期末考試結束了,老師需要統計成績,本學期有語文、數學和英語三門課,老師知道每個同學的三門課程的分數,因為老師實在太忙了,所以老師找到了你,並給出了排序方法:

1.當總分不同時,按總分公升序排序

2.當總分相同時,按照語文成績公升序排序

3.同理,當語文成績相同時按照數學成績公升序排列

4.最後將排序好的資料送給老師即可

聰明的你能否幫老師解決這個問題呢?

input

第一行輸入乙個t(t<=20),代表有t組資料,每組資料第一行輸入n(n<=50),代表此班級有n位同學,接下來n行,分別輸入每位同學的學號和語數英三門成績(每門成績均大於等於0,小於等於100)。

output

按照題目要求,公升序輸出每位同學的學號和總分

sample input

13101 90 70 90

102 80 60 60

103 90 95 90

sample output

102 200

101 250

103 275

#includeinta[55],b[55],c[55],d[55],e[55];

intmain ()

for(i=1;i<=n;i++)

for(i=1;i

}

}

for(i=1;i

if(b[j]==b[j+1])

}

}

}

}

for(i=1;i<=n;i++)

}

return0;

}

有木有足夠長呢,**,瞬間感覺高大上的腦力活被我搞成了苦逼不堪的體力活、、、

今天某位大神教了我乙個好辦法,雖然以前他也講過。。。但是意外啦,不記得有講過

假設先按總分n(300>n>0)排序,後按語文c(100>c>0)排序,再按學號(d從小到大排)排序。

那麼可以乙個很大的整數來表示此三項和,即n*1000000+c*1000-d;

這樣的話很容易就看到了各項的數值大的最終值肯定也大,而學號的話小的肯定數值較大;

只需乙個sort排序,簡簡單單gameover!!!

#include

#include

usingnamespacestd;

structjxj

xs[333];

intcmp(jxj x,jxj y)

intmain()

sort(xs,xs+t,cmp);

for(i=0;i<5;i++)

return0;

}

果然**短了一半,瞬間土渣變成高大上,其實真的只是水題。

快來簽到呀(水題)

快來簽到呀 description 受疫情影響,霍格沃茨的學生們也在家上網課。konomikonomiko nomi 是格蘭芬多學院應用魔法與術士構造專業的學生今天他要上nn n門課程,第i門課有乙個簽到截止時間aia iai konomikonomiko nomi 必須在截止前釋放魔法進行簽到,但...

網路賽水題

題目 一開始看確實很簡單的,但是暈死的題意距離坑了很多人。view code 1 typedef long long ll 2 const int n 1010 3 inta n 4int main 516 intflag 17for i 0 i n i 1831 sum 32 33if flag ...

水題歡樂賽 套路

套路是人類進步的階梯,我將不惜一切代價套路學習 費清澄 恩恩真是太對了 zqc是乙隻套路的犰 zqc有乙個套路題庫,當然,他為了讓這個套路題庫不被發現,給題庫加了密。這個題庫有很多密碼,你只有輸入套路密碼後,你才能看到題目,並且題目的質量和套路密碼的長度成正比.根據你獲取到的情報,套路密碼為兩個字串...