あなたの成績は何ですか?

「ポイントは、ポイントは、学生の人生は!」
これはよく大学で知られているバラード(歌谣)で、あなたもこの試験では、あなたのスコアを気にしなければなりません。あなたはどのように多くのポイントを得ることができますか?今、私はあなたにこのコースで使用されているルールを語りました。
この最終試験で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; 
} 
`` `

 

おすすめ

転載: www.cnblogs.com/voids5/p/11209867.html