[13458]試験監督
🔗 質問リンク
https://www.acmicpc.net/problem/13458
🔍 問題の説明
全部でN個の試験場があり、試験場ごとに受験者がいる.i番試験場の受験者はAi名です.
監督員には総監と副監督の2種類がある.監督試験者が1つの試験場で監視できる受験者はB名、副監督者が1つの試験場で監視できる受験者はC名である.
各試験場には監督が1人しかいないので、いくつかの副監督試験があります.
試験場ごとに受験生を監視しなければならない.この場合、必要な監督人数の最大値を求めるプログラムを作成してください.
⚠▼制限
1行目は試験場の個数N(1≦N≦1000000)を与える.
2行目は各試験場の受験者数Ai(1≦Ai≦1000000)を与える.
3行目はBとCです.(1 ≤ B, C ≤ 1,000,000)
🗝 プール(言語:Java)
三星(サムスン)ソフトウェアパワーテスト機の出題が容易に見える問題だ.でも正解率26%は皮肉
整数範囲がintの場合は必ず溢れ出すのでlongと宣言します.主監督員は一人でなければならず、残りは副監督員が処理し、部と余数で一度に正しい答えを計算しなければならない.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static long countSupervisor(String[] studentNum, int main, int sub) {
long answer = 0;
for (String n : studentNum) {
// 주 감독관 처리 후
long afterMain = Integer.parseInt(n) - main;
answer++;
// 주 감독관 혼자 처리 가능
if (afterMain <= 0)
continue;
// 부 감독관 처리
answer += (afterMain / sub);
answer += (afterMain % sub == 0) ? 0 : 1;
}
return answer;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Integer.parseInt(br.readLine());
String[] studentNum = br.readLine().split(" ");
StringTokenizer st = new StringTokenizer(br.readLine());
int main = Integer.parseInt(st.nextToken()), sub = Integer.parseInt(st.nextToken());
System.out.print(countSupervisor(studentNum, main, sub));
}
}
Reference
この問題について([13458]試験監督), 我々は、より多くの情報をここで見つけました https://velog.io/@shiningcastle/13458-시험-감독テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol