[PAT]クラス1080大学院アドミッション(30点)

質問の意味:

入力3つの正の整数N、M、K(N <= 40000、M <= 100、K <= 5)は、学生がボランティアの数を埋めることができ、学生の数、学校の候補の総数を示します。次に行を入力Mは0から各就学、N行およびKのM-1個それぞれ含む2つのグレードのボランティアに正の整数を表します。並行し自主、もし同じ結果の原則に従い、学校に入学生徒数あたりの出力のM個の出力ラインは、あなたが計画された入院の数を突破することができます。

騙す:

出力があれば(I> 0)はcout <<「\ n」を使用したとき、私は本当に、なぜ理解していない。テストはポイント2と4フォーマットエラーにつながります。

見つかった最後の行は、行を変更したい必要があります。

コード:

#define HAVE_STRUCT_TIMESPEC
する#include <ビット/ STDC ++ H>
名前空間STDを使用して、
typedefは構造体学生{
int型のX、Y。
int型のID。
INT C [7]。
}。
学生D [40007];
INT [107]。
int型B [7]。
ベクター<整数> ANS [107]。
ブールCMP(学生A、学生B){
するif(!a.x + AY = b.x +による)
リターンa.x + AY> b.x +によります。
斧> BX返します。
}
メインINT(){
IOS :: sync_with_stdio(偽)。
cin.tie(NULL)。
cout.tie(NULL)。
整数N、M、K。
CIN >> N >> M >> K。
以下のために(INT I 0 =; I <M; ++ I)
CIN >> [I]。
以下のために(INT iが= 0、I <N; ++ I){
CIN >> D [i]は.X >> D [i]の.Y。
用(INT J = 1; J <= K。

D [i]は.ID = I。
}
ソート(D、D + N、CMP)。
int型タンプ= -1;
以下のために(INT iは= 0、I <N; ++ I){
IF(I> 0 && D [i]は.X + D [i]は.Y <D [I-1]・X + D [I-1]。 Y)
タンプ= -1。
用(INT J = 1; J <= K; ++ J){
IF([D [i]は.C [J]]){
--a [D [i]は.C [J]。
ANS [D [i]は.C [J]一back(D [i]を.ID)。
タンプ= D [i]は.C [J]。
ブレーク;
}
そうであれば(D [i]が.C [J] ==タンプ&& D [i]は.Y == D [I-1] .Y && D [i]は.X == D [I-1] .X){
ANS [タンプ] .push_back(D [i]の.ID)。
ブレーク;
}
}
}
のために(INT iは= 0; I <M; ++ i)が
ソート(ANS [I] .begin()、ANS [I] .END())。
(I = 0 INT; I <M; ++ i)に対する{
ための(int型J = 0; J <ANS [I] .size(); ++ J){
IF(J> 0)
COUT <<」 " ;
coutの<< 年[I] [J]。
}
裁判所未満<< "\ n"は、
}
0を返します。
}

おすすめ

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