# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1154405 | finem | Job Scheduling (CEOI12_jobs) | Java | 0 ms | 0 KiB |
import java.util.*;
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int days = in.nextInt();
int delay = in.nextInt();
int numRequests = in.nextInt();
int[] log = new int[numRequests];
Map<Integer, Integer> freq = new TreeMap<>();
for(int i = 0; i < numRequests; i++){
log[i] = in.nextInt();
freq.put(log[i], freq.getOrDefault(log[i],0)+1);
}
Arrays.sort(log);
long higher = Integer.MAX_VALUE;
long lower = 1;
boolean condition = true;
while(higher > lower){
long mid = (higher+lower)/2;
if(mid >= numRequests){condition = true;}
int delaydays = 0;
for(int i = 1; i <= days-delay; i++){
int temp = freq.get(i) - delay;
if(temp > 0){
delaydays += temp;
}
if(delaydays > delay){
condition = false;
break;
}
}
if(!condition){
lower = mid+1;
}
else{
higher = mid;
}
}
}