관리 메뉴

Mini

백준 13458 시험감독 c++ // ret는 int범위를넘을수있다. 본문

Algorithm/배열

백준 13458 시험감독 c++ // ret는 int범위를넘을수있다.

Mini_96 2024. 2. 16. 00:31

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. ret의 범위설정

시험장 1,000,000 * 학생수 1,000,000 > 21억

-> long long ret를 써야함

 

2. 전체코드

#include <bits/stdc++.h>

using namespace std;

int n, a[1000000+4], b, c,tot;
long long ret;

int main() {
	cin.tie(0);

	cin >> n;

	for(int i=0;i<n;++i) {
		cin >> a[i];
		tot += a[i];
	}
	cin>> b >> c;

	//각 시험장에 대해 검사필요
	
	for (int i = 0; i < n; ++i) {
		//총감독만으로 충분한경우 다음시험장검사
		ret++; //총감독은 반드시 있어야함
		if (a[i] <= b) {
			continue;
		}


		int res = a[i] - b; //감독해야하는 학생수
		
		if (res % c == 0) {
			ret += (res / c);
		}
		else {
			ret += (res / c);
			ret++;
		}
	}

	cout << ret;

	return 0;
}