한상덕은 정더고등학교의 새 교장이다.
교장으로서 당신의 첫 번째 일은 각 학급의 수학 시험 점수를 집계하는 것입니다.
정덕고 학생들의 수학 시험 점수를 고려하여 반별 최고점, 최저점, 차점을 구하는 프로그램을 작성하시오.
입력하다
첫 번째 행은 정덕고등학교의 K 학급 수를 나타냅니다(1 ≤ K ≤ 100). 다음 K 라인은 각 반의 학생 수 N(2 ≤ N ≤ 50)과 각 학생의 수학 점수를 제공합니다.
테스트 점수는 공백으로 구분된 0보다 크거나 같고 100보다 작거나 같은 정수입니다.
인쇄
각 절반의 출력은 두 줄로 구성됩니다.
- 첫 번째 줄은 “Class X”를 인쇄합니다.
X는 금액의 절반이며 입력한 순서대로 1부터 증가합니다. - 두 번째 줄은 최고점수, 최저점수, 등급이 내림차순일 때 인접한 점수 차이가 가장 큰 것을 출력하며 형식은 예제 출력과 동일하다.
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int K, N(101), Grade(101)(51);
int gap(101);
cin >> K; // 반의 수 입력받기
for (int i = 0; i < K; i++) {
cin >> N(i); // 반의 학생수 입력받기
for (int j = 0; j < N(i); j++) {
cin >> Grade(i)(j); // 학생 성적 입력받기
}
sort(Grade(i), Grade(i) + N(i)); // 오름차순으로 성적 정렬
}
for (int i = 0; i < K; i++) { // 최대 갭 구하기
gap(i) = Grade(i)(1) - Grade(i)(0); // 첫번째 갭 넣기
for (int j = 2; j < N(i); j++) { // 구한 갭이 gap에 있는 값보다 크면 업데이트
if (Grade(i)(j) - Grade(i)(j - 1) > gap(i)) {
gap(i) = Grade(i)(j) - Grade(i)(j-1);
}
}
}
for (int i = 0; i < K; i++) { // 값 출력
cout << "Class " << i + 1 << "\n";
cout << "Max " << Grade(i)(N(i) - 1) << ", Min " << Grade(i)(0) << ", Largest gap " << gap(i) << "\n";
}
return 0;
}