본문 바로가기
백준

[13458] 시험 감독

by kmyobin 2023. 4. 6.


https://www.acmicpc.net/problem/13458

 

13458번: 시험 감독

첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)

www.acmicpc.net

단순한 사칙 연산 문제인데 정답률이 28%였다.

나도 틀렸다. (?)

 

자료형 범위가 포인트인 문제였다 ^.^, ,

 

시험 감독 수의 최댓값은 한 시험장당 100만명이 필요하면서 총 100만개의 시험장이 있는 경우이다.

따라서 (10^6)*(10^6) = 10^12라는 것.

int 쓰면 오답이 나온다.

long int로 바꾸었더니 성공!

 

#include <iostream>
using namespace std;
#define MAX 1000001

int N;
int A[MAX];
int B, C;

long int min_visor; // 감독 수의 최댓값은 (10^6)*(10^6) = 10^12

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> N;
	for (int i = 1; i <= N; i++)
	{
		cin >> A[i];
	}
	cin >> B >> C;

	min_visor += N; // 총감독관은 시험장마다 있어야 하므로

	for (int i = 1; i <= N; i++)
	{
		A[i] -= B; // 총감독관이 담당하는 학생 빼기
		if (A[i] < 0) A[i] = 0; // too much면 0으로 통일(음수로 가지 않도록)
	}

	for (int i = 1; i <= N; i++)
	{
		min_visor += A[i] / C; 
		if (A[i] % C > 0) { // 나머지가 있다면
			min_visor++; // 감독 1명 추가
		}
	}

	cout << min_visor;
}

'백준' 카테고리의 다른 글

[14891] 톱니바퀴  (0) 2023.04.08
[14503] 로봇 청소기  (0) 2023.04.07
[14501] 퇴사  (0) 2023.04.05
[11444] 피보나치 수 6  (0) 2023.02.08
[10830] 행렬 곱셈  (0) 2023.02.08

댓글