Exercises

백준 1654

sysout.초코우유 2018. 12. 20. 15:53

일단 돌아가게만이라도 만들어 놓고 싶어서 이진탐색으로 모든 경우를 찾아 해결.

앞의 오류는 왜인지 아직 못찾.................

import java.util.*;

public class Main {
	
	int n;
	long demand;
	long[] cab;
	
	Main(int n){
		this.n=n;
		cab=new long[n];
	}
	
	long test(long min, long max) {
		if(min==max) {return max;}
		long res=0;
		long len=(min+max+1)/2;
		for(long cable:cab) {
			res+=cable/len;
		}
		if(demand<=res) {
			return test(len,max);
		}
		else { 
			return test(min,len-1);
		}
	}
	
	public static void main(String args[]) {
		Scanner sc=new Scanner(System.in);
		int n = sc.nextInt();
		Main main=new Main(n);
		main.demand=sc.nextInt();
		for(int i = 0; i < n; i++) {
			main.cab[i]=sc.nextInt();
		}
		sc.close();
		System.out.println(main.test(1,(long)Integer.MAX_VALUE));
	}
}