[PAT]クラス1062タレントと徳(25点)

質問の意味:

入力3つの正の整数N、L、H(N <= 1E5、L> = 60、H <100、H> L)、番号、パスラインとハイレベルの行を表します。N行の、入力データ、ID、人物の値に道徳的な値を含む各行。人の、道徳的、聖人としてH以上での道徳LにH以上である場合には、道徳の貴族以上である、と愚か者、倫理的、道徳的な秩序など未満ではないとし、Lは以前より小さくないときL未満と道徳ないように悪役よりも低い場合(優先決意聖人、聖人は道徳より高くすることができます)。それぞれ、道徳的な順序和降順に応じて、第二優先度が高い順に番号であり、グループ内の独自のソートでは、第3の優先順位は、昇順のIDです。質問が注文した人の合計数が出力され、その情報の出力を意図しました。

コード:

#define HAVE_STRUCT_TIMESPEC
する#include <ビット/ STDC ++ H>
使用して名前空間std。
typedefは構造体の学生{
文字列ID;
int型V、T。
int型の合計。
}。
[100007]小さな学生セージ[100007]、高貴[100007]、[100007]をだまします;
ブールCMP(学生A、学生B){
場合(a.sum = b.sum!)
戻りa.sum> b.sum。
IF(AV = BV!)
戻りAV> BV;
a.id <b.id返します。
}
int型のmain(){
IOS :: sync_with_stdio(偽)。
cin.tie(NULL)。
cout.tie(NULL)。
N INT、L、H。
CIN >> N >> L >> H。
INT CNT1 = 0、CNT2 = 0、CNT3 = 0、CNT4 = 0。
以下のために(; iは= N <; I = int型1 ++ I){
文字列ID。
cinを>> ID。
int型V、T。
CIN >>
IF(V> = H && T> = H){
セージ[++ CNT1] .ID = ID。
セージ[CNT1] .V = V。
セージ[CNT1] .T = T。
セージ[CNT1] .SUM = V + T。
}
他(V> = H && T> = 1)であれば{
希[++ CNT2] .ID = ID。
【CNT2] .V = V希。
希[CNT2] .T = T。
希[CNT2] .SUM = V + T。
}
他の場合(V> = L && T> = L && V> Tを=){
[++ CNT3] .ID = IDをだまします。
[CNT3] .V = Vをだまします。
【CNT3] .T = Tだまします。
【CNT3] .SUM = V + Tだまします。
}
他(V> = L && T> = L && V <T)であれば{
小[++ CNT4] .ID = ID。
【CNT4] .V = V小さいです。
小さな[CNT4] .T = T。
小さな[CNT4] .SUM = V + T。
}
}
ソート(セージ+ 1、セージ+ 1 + CNT1、CMP)。
ソート(貴金属+ 1、希+ 1 + CNT2、CMP)。

ソート(小+ 1、小さな+ 1 + CNT4、CMP)。
coutの<< CNT1 + CNT2 + CNT3 + CNT4 << "\ nを";
(; I <= CNT1 ++ I I = 1 INT)ため
COUT <<セージ[I] .ID << " "<<セージ[I] .V <<"" <<セージ[I] .T < < "\ nを";
(; I <= CNT2 ++ iは1 = INT)のための
COUT <<希[I] .ID << " ".V [I] <<希<<"" <<希[I] .T < < "\ nを";
以下のために(; I <= CNT3 ++ I I = 1 INT)
COUT <<ばか[I] .ID << " "<<ばか[I] .Vを<<"" <<ばか[I] .T < < "\ nを";
以下のために(; I <= CNT4 ++ I I = 1 INT)
COUT <<小[I] .ID << " "<<小[I] .V <<"" <<小[I] .T < < "\ nを";
0を返します。
}

おすすめ

転載: www.cnblogs.com/ldudxy/p/11750146.html