PATグレード--A1062タレントと美徳

約900年前、中国の哲学者司馬光は、彼が人々の才能と美徳について話した歴史の本を書きました。彼の理論によると、才能と徳の両方に優れている人は、「セージ(圣人)」でなければなりません。それほど優れているが、1つの美徳と才能を上回る「貴族(君子)」と呼ぶことができます。ない「馬鹿男(愚人)」で良いと。まだ愚か者の男が美徳よりも才能を好む「小さな男(小人)」よりも優れています。

今、人々のグループの才能と徳のグレードを与え、あなたは司馬光の理論によると、それらをランク付けすることになっています。

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。それぞれの場合は、最初の行における3つの正の整数与える:  N(≤)、ランク付けする人の総数を、 L(≥)、低級修飾グレード結合-つまり、グレード才能のおかげとの両方ではない、このラインの下にあるものだけがランク付けされます。及び  H(<)、資格の高いライン-つまり、ではない。この線の下の両方のグレードのものが「賢者」とみなされ、その総等級に係る非昇順でランク付けされます。下記の才能グレードとのそれら  Hbutの美徳グレードは「貴族」としてcosideredされ、また、その合計の成績に応じて非増加順にランク付けされているが、それらは「賢人」の後に記載されていません。以下の両方のグレードを有する者 Hは、しかし、才能よりも低くない美徳で「愚か者の男性」として考えられています。彼らは、同じ方法ではなく、「貴族」の後にランク付けされています。グレード合格両方の人々の残りの  Lラインは「バカ男」の後にランク付けされています。

そして、  N行は、それぞれの形式で人物の情報を提供し、従います。

ID_Number Virtue_Grade Talent_Grade

ここで、  ID_Number 8桁の数字であり、そして両方のグレードは[0、100]の整数です。すべての数値は、スペースで区切られます。

出力仕様:

出力の最初の行は与えなければなりません  M(≤)、実際にランク付けされている人々の総数を。次いで  Mlinesはそれぞれ順位規則に従って、入力と同じフォーマットに人物の情報を提供し、従います。トータルグレードのネクタイがある場合、それらは非増加順に彼らの美徳の成績に関してランク付けしなければなりません。まだ彼らのIDの昇順で引き分け、その後、出力がある場合。

サンプル入力:

14 60 80
10000001 64 90
10000002 90 60
10000011 85 80
10000003 85 80
10000004 80 85
10000005 82 77
10000006 83 76
10000007 90 78
10000008 75 79
10000009 59 90
10000010 88 45
10000012 80 100
10000013 90 99
10000014 66 60

サンプル出力:

12
10000013 90 99
10000012 80 100
10000003 85 80
10000011 85 80
10000004 80 85
10000007 90 78
10000006 83 76
10000005 82 77
10000002 90 60
10000014 66 60
10000008 75 79
10000001 64 90


1の#include <iostreamの>
 2の#include <ベクトル>
 3の#include <アルゴリズム>
 4  使って 名前空間STDを、
5  構造体ノード
 6  {
 7      int型のID、VIR、TAL、ラボ。
8 }ノード[ 100010 ]。
9  INT N、L、H。
10  ブールCMP(ノード、ノードB)
 11  {
 12      であれば(a.lab =!b.lab)
 13          リターン a.lab < b.lab。
14      他の 場合((a.tal + a.vir)!=(b.tal + b.vir))
15          リターン(a.tal + a.vir)>(b.tal + b.vir)。
16      他の 場合(!a.vir = b.vir)
 17          リターン > a.vir b.vir。
18      他の
19          のリターン a.ID < b.ID。
20  }
 21  のint main()の
 22  {
 23      CIN >> N >> L >> H。
24      INT M = 0 25      のためにint型 I = 0 ; iがNを<++ i)が
 26      {
 27         CIN >>ノード[M] .ID >>ノード[M] .vir >> ノード[M] .tal。
28          であれば(ノード[M] .vir <L ||ノード[M] .tal < L)
 29              続けます30          他の 場合(ノード[M] .vir> = H &&ノード[M] .tal> = H)
 31              ノード[M] .lab = 1 32          他の 場合(ノード[M] .vir> = H &&ノード[M] .tal < H)
 33              ノード[M] .lab = 2 34          他の 場合(ノード[M] .vir <H &&ノード[M] .tal <H &&ノード[M] .vir> = ノード[M] .tal)
 35              ノード[M]。36          他の
37              ノード[M] .lab = 4 38          M ++ ;            
39      }
 40      COUT << M << ENDL。
41      ソート(ノード、ノード+ M、CMP)。
42      のためにint型 I = 0 ; iがMを<++ i)が
 43          COUT <<ノード[I] .ID << "  " <<ノード[i]を.vir << "  " <<ノード[i]は.tal << てendl;
44      リターン 0 ;
45 }

 

おすすめ

転載: www.cnblogs.com/zzw1024/p/11294804.html