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 |
댓글