北大信科2017機試真題

2021-08-20 08:44:33 字數 1846 閱讀 3297

總時間限制: 1000ms

記憶體限制: 65536kb

描述

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

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

7 279

5 279

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

5 279

7 279

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

輸入

包含n+1行:

第1行為乙個正整數n,表示該校參加評選的學生人數。

第2到n+1行,每行有3個用空格隔開的數字,每個數字都在0到100之間。第j行的3個數字依次表示學號為 j-1 的學生的語文、數學、英語的成績。每個學生的學號按照輸入順序編號為1~n (恰好是輸入資料的行號減1)。

所給的資料都是正確的,不必檢驗。

50%的資料滿足:各學生的總成績各不相同;

100%的資料滿足: 6<=n<=300。

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

樣例輸入

樣例 #1:690

6780

8766

9178

8991

8899

7767

8964

7889

98樣例 #2:880

8989

8898

7890

6780

8766

9178

8991

8899

7767

8964

7889

98

樣例輸出

樣例 #1:

6265

4264

3258

2244

1237

樣例 #2:

8265

2264

6264

1258

5258

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 300 + 5;

struct node node[maxn];

bool cmp (const node& a, const node& b)

int main()

sort(node, node+n, cmp);

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

return

0;}

比較時sort函式根據cmp函式進行判斷輸入的大小,系統預設ab時返回為真,那麼最終得到的排序結果也相應地變為降序。

特殊數 2017北郵機試真題

題目 設乙個正整數既是平方數又是立方數時,稱其為special數。輸入包含多組測試資料,第一行輸入測試資料的組數,接著在後續每行輸入n n 1000000000 的時候,請輸出1到n中包含的所有special數的個數。example inputs 21 64outputs 12 project sp...

華為機試真題 66 單詞搜尋

題目 日期 2015 07 06 題目 wordsearch include include include include include using namespace std bool dfs vector board,string word,int index,int x,int y,vec...

華為機試真題 70 分蘋果

題目 m個相同蘋果放到n個相同籃子裡有多少種放法,允許有籃子不放。1 m 10,1 n 10 例如5個蘋果三個籃子,3,1,1 和 1,1,3是同一種放法 輸入 7 3 輸出 8思路 設f m,n 為m個蘋果,n個盤子的放法數目 當n m 必定有n m個盤子永遠空著,去掉它們對擺放蘋果方法數目不產生...