「ポイントは、ポイントは、学生の人生は!」
これはよく大学で知られているバラード(歌谣)で、あなたもこの試験では、あなたのスコアを気にしなければなりません。あなたはどのように多くのポイントを得ることができますか?今、私はあなたにこのコースで使用されているルールを語りました。
この最終試験で5つの問題があります。あなたはすべての5つの問題を解決することができれば、私はあなたに100ポイントを与えます。もちろん、それはあなたの多くは、かなり困難です。あなたが4つの問題を解決することができる場合は、ハイスコア95または90を得ることができます(あなたはあなたのランクが4つの問題を解決するすべての学生の前半にある場合にのみ、(前者)の元を得ることができます)。アナログ的(以此类推)、あなたは85,80,75,70,65,60を得ることができます。しかし、あなたは何の問題を解決する場合は、この試験に合格しません、と私は50とスコアをマークします
。注、唯一の1人の学生は3人の学生が4つの問題を解決したスコア95を取得します。
私はあなたのすべての試験に合格できることを願います!
いい加減にして!
**入力**
入力は複数のテストケースが含まれています。各テストケースは、最初の行の整数N(1 <= N <= 100、学生の数)が含まれ、その後、N行が続きます。各ラインは、P(0 <= p <= 5解決された問題の数)及びT(消費時間)を含みます。あなたは、すべてのデータが0 <P異なっていると仮定することができます。
負の整数で始まるテストケースが入力を終了し、このテストケースを処理するべきではない
**出力**
出力それぞれの場合のNラインにおけるN学生のスコア、および各ケースの後に空行があります。
**サンプル入力**
4
5 6時30分17秒
4午前7時31分27秒
4 8時12分12秒
4 5時23分13秒
1
5 6時30分17秒
-1
**サンプル出力**
100
90
90
95
100
重要な点は:人はそれぞれ、小型から大型まで1〜4タイトル時間に行う、またポイント65,75,85,95の前半に、学生が並べ替えを容易にするために、元の順序に復元した場所を記録する必要があります。
コード: `` ` の#include <iostreamの> の#include <アルゴリズム> 書式#include <cstdioを> 使用して 名前空間はstd; 構造体ノード{ int型TM。 int型の合計。 int型のID。 int型と同じ。// 重复人数 int型スコア。 }。 ブールCMP1(ノードX、ノードY){ 場合(x.tm> y.tm)リターン 1 。 そう であれば(x.tm == y.tm){ 場合(x.sum <y.sum)リターン 1 。 リターン 0 ; } それ以外 の戻り 0 ; } ブールCMP2(ノードX、ノードY){ 場合(x.id <y.id)リターン 1 。 それ以外 の戻り 0 ; } int型のmain(){ int型N; 一方、(CIN >> N && N> = 0 ){ ノード[N]。 INT S1 = 0、S2 = 0、S3 = 0、S4 = 0 。 以下のために(int型 i = 0 ; iがn <; iは++ ){ int型 X、Y、Z。// 时分秒 のscanf(" %D%Dた:%d:%のD "、および[I](商標)、およびX&Y、およびZ)。 もし([I](商標)== 1)S1 ++ 。 もし([I](商標)== 2)S2 ++ 。 もし([I](商標)== 3)S3 ++ 。 もし([I](商標)== 4)S4 ++ 。 [I] .SUM = X * 3600 + Y * 60 + Z。 [I] .ID = iは、 } ソート(A + N、CMP1)。 [0 ] .same = 0 。 以下のために(int型 i = 1 ; iがn <; iは++ ){ 場合([I](商標)== A [I- 1 ](商標)){ [I] .sameは = [I- 1 ] .same + 1 ; } そう [I] .same = 0 。 } のために(int型 i = 0 ; iがn <; iは++ ){ スイッチ([I](商標)){ ケース 1:もし([I] .same <S1 / 2)[I] .score = 65; 他の [i]を.score = 60 ; 破ります; ケース 2:もし([I] .same <S2 / 2)[I] .score = 75 。 他の [i]を.score = 70 ; 破ります; ケース 3:もし([I] .same <S3 / 2)[I] .score = 85 。 他の [i]を.score = 80 ; 破ります; ケース 4:もし([I] .same <S4 / 2)[I] .score = 95 。 他の [i]を.score = 90 ; 破ります; ケース 5:[I] .score = 100。破ります; デフォルト:[i]を.score = 50 ; } } ソート( + N、CMP2)。 以下のために(int型私= 0 ; iがN <; Iは++ ){ COUT << [I] .score << ENDL。 } COUT << ENDL。 } 戻り 0; } `` `