P1093奨学金

タイトル説明

小学校は最近、トップ5の学生の奨学金の学術の卓越性の一部として思い付くするつもりスポンサーの合計を、受け取りました。言語、数学、英語:期間は、各学生は、3コースの実績を持っています。ハイからローへの整理を押して、二人の学生であれば、同じスコア、降順で、言語スコア、2つの学生スコアと言語スコアは、その後、学生の数が少ないの規定は、学校の前に立って、同じであれば、そう、各学生を注文すると、一意に決定されます。

タスクは:第一上記の規則を並び替え、入力3コースの結果に基づいて総合スコアを算出し、そして、学校の数と総スコアの順位の最終的な出力順序上位5つの学生。あなたは上記の規則に厳密に従ってソートされなければならないので、前の5人の学生に、奨学金は、誰にとっても同じではないことに注意してください。例えば、一つの正解で、最初の二つのライン(出力ラインごとに2つの学校、総スコア)の出力データがあれば、次のとおりです。

7 279 2 7 9
5 279 2 7 9

データは、次の2行の意味である:2人の学生が続く学校の数が最も多い得点7 7、5 番5。2人の全てのうちの生徒  279 2 7 9(スコアが入力言語、数学、英語と3人の被験者に等しい)が、学校の第7 高い生徒の成績7つの言語。あなたの上の2つの出力データがある場合:

5 279 2 7 9
7 279 2 7 9

押して、出力エラー処理、得点することはできません。

入出力フォーマット

入力フォーマット:

 

総行n + 1。

1 1行動正の整数N - (\ル300)N- 3 0 0 )、学生の数は、学校の選択に関与表します。

2 を介して2 のn + 1 N- + ライン当たり1本のライン。3つのスペースで区切られた3つの数字の各桁0 へ0 100 。1 0 0。最初のJ Jライン3 ターンで3桁の学生数は、として表現J-1 J - 学年の学生1つの言語、数学、英語。番号を付け、学校数の入力順に各学生。1〜N- 1 のN-(入力データの正確マイナス行番号。1 1)。 

与えられたデータが正しいか、テストしていません。

//黄Uドリンクは、入力フォーマットを修正感謝します

 

出力フォーマット:

 

5行、各行の合計は、前に続くスペースで区切られた2つの正の整数、ある5 5学生の学生数と総得点。

 

サンプル入力と出力

入力サンプル#1:  コピー
6 
90 67 80 
87 66 91 
78 89 91 
88 99 77 
67 89 64 
78 89 98
出力サンプル#1:  コピー
6 265 
4 264 
3 258 
2 244 
1 237

入力サンプル#2:  コピー
8 
80 89 89 
88 98 78 
90 67 80 
87 66 91 
78 89 91 
88 99 77 
67 89 64 
78 89 98
出力サンプル#2:  コピー
8 265 
2 264 
6 264 
1 258 
5 258
#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
構造体ノード{
     int型の和、中国語、数学、英語、NUM。
} [ 305 ]。
ブールCMPP(ノードX、ノードY){
     場合(!x.sum = y.sum){
         戻り x.sum> y.sum。
    } 
    もし(!x.chinese = y.chinese){
         戻り x.chinese> y.chinese。
    } 
    戻り x.num < y.num。
} 
int型のmain(){
     int型N; 
    cinを >> N;
    以下のためのint型i = 1 ; iが<= N; ++ I){ 
        scanf関数(" %D%D%D "、および[I] .chinese、&[I] .math、&[I] .english)。
        [I] .nu​​m = I。
        [I] .SUM = A [i]の.chinese + [I] .math + [I] .english。
    } 
    ソート(A + 1、+ 1 + N、CMPP)。
    以下のためにint型 I = 1 ; = iが< 5 ; ++ I){ 
        のprintf(" %D%D \ n " 、[I] .nu​​m、[I] .SUM)。
    } 
}

 

おすすめ

転載: www.cnblogs.com/crazily/p/11122890.html