알고리즘/구현

백준 - 13458

hahihi 2023. 10. 25. 13:37

문제

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

필요한 감독관 수의 최솟값을 구하는 문제였다.

 

문제 풀이

각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다.

이 문구에서 나는 총감독관은 1명까지 있을 수 있으니 0명도 괜찮다고 이해하고 풀어서 예제 케이스가 다른 값이 나왔다. 예제 케이스를 풀기 위해서는 총감독관은 항상 1명씩 있어야 한다. 해당하는 예제 케이스가 있어서 무엇이 문제인지 알 수 있었는데 만약 예제 케이스가 없었다면 어디가 잘못된 것인지 찾지 못했을 것 같다. 문제에 확실하게 0명이 안된다고 나와있지 않아서..

#define _CRT_SECURE_NO_WARNINGS
#include <vector>
#include<iostream>
#include <queue>
#include <string>
#include <algorithm>
#include <stack>
#include <stdlib.h>
#include<stdio.h>

using namespace std;
int A[1000001];

int calSupervisionNum(int A, int B, int C) {

	if ((A - B) <= 0) return 1;
	else {
		if ((A - B) % C == 0) {
			return 1 + (A - B) / C;
		}
		else {
			return 2 + (A - B) / C;
		}
		
	}
}

int main() {
	int N;
	int B, C;
	long long cnt = 0;
	
	scanf("%d" , &N);

	for (int i = 0; i < N; i++) {
		scanf("%d", &A[i]);
	}
	scanf("%d %d", &B, &C);

	for (int i = 0; i < N; i++) {
		cnt += calSupervisionNum(A[i], B, C);
	}
	printf("%lld", cnt);
	return 0;
}

/*
3
3 4 5
9 9

*/