[PAT] 클래스 1,080 대학원 입학 (30 점)

질문의 의미 :

입력 세 포지티브 정수 N, M, K (N <= 40000, M <= 100 K는 <= 5) 학생의 수를 나타내고, 학교에 대한 후보들의 수는 학생 지원자의 수를 채울 수있다. 그러면 M은 각 학교 등록 번호 M-1, N 개의 행과 K 개의 등급; 상기 각 지원자 0에서 양의 정수를 나타내는 라인을 입력한다. 병렬 자발적 경우 동일한 결과의 원칙에 따라 학교에 입학 학생 수에 따라 출력의 M 출력 라인, 당신은 계획 입학의 수를 돌파 할 수 있습니다.

장난:

난 정말 이해하지 못하는 이유를 출력 할 때 사용하는 경우 (I> 0) cout과 << "\ n"; 시험 지점 2와 4 형식 오류로 이어질 것입니다. . . . .

찾을 마지막 라인은 라인을 변경하려는해야합니다. . .

코드 :

#DEFINE HAVE_STRUCT_TIMESPEC
#INCLUDE <비트 / stdc ++ H.>
네임 스페이스를 사용하여 표준;
타입 정의 구조체 학생 {
INT의 X, Y;
INT ID;
INT C [7];
};
학생 D [40007];
int로 A [107];
INT의 B [7];
벡터 <INT> ANS [107];
불리언 CMP (학생 A, 학생 b) {
경우 (a.x + AY = + b.x 의해!)
창 a.x + AY> b.x + 단계;
도끼> BX 반환;
}
INT 주 () {
IOS :: sync_with_stdio (거짓);
cin.tie (NULL);
cout.tie (NULL);
INT의 N, M, K;
CIN N >> >> >> K m;
대해 INT (I = 0; I <m; I ++)
CIN >> A [I];
{위해 (; I <N ++ I INT I = 0)
CIN >> D [I] .x를 >> D를 [I] .Y;
대 (INT J = 1; J <= K;

D [I] .ID = 1;
}
정렬 (D, D + N, CMP);
INT 탐포 = -1;
대해 INT (I = 0; I <N; I ++) {
경우 (I> 0 && D [I] .x를 + D [I] .Y <D [I-1] .x를 + D [I-1]. Y)
탐포 = -1;
대 (INT J = 1; J <= K, J ++) {
경우 (a [D [I]가 .c [J]) {
--a [D [I]가 .c [J]];
ANS [D [I]가 .c [J]]와 push_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 ());
경우 (나는 <m, INT는 0 I = I ++) {
대 (INT J = 0; J <ANS [I] 크기는 (); J ++) {
경우 (j> 0)
COUT << "" ;
COUT << 세 [I] [J]
}
COUT << "\ n ';
}
0을 반환;
}

추천

출처www.cnblogs.com/ldudxy/p/11839051.html