Encontrar o maior k número

Bom dia,

eu estou a tentar resolver o seguinte problema.
Dado um t e um c, preciso de encontrar o maior número n possível tal que c * n * log(n) < t. Ou seja, preciso de encontrar o número n mais próximo de t que satisfaça essa conta.
O código que fiz é o seguinte, mas não satisfaz todas as condições que devia e não percebo porquê?

Problema tirado do TopCoder:

public class SortEstimate {
	public double howMany(int c, int time)
	{
		//1*4*log(4) = 4*2 = 8
		double l=0;
		double h=Double.MAX_VALUE/100;
		double m;
		double dtime = time/c;
		
		for(int i=0; i<1000; i++)
		{
			m = (l+h)/2;
			if(m * (Math.log(m)/Math.log(2)) > dtime)
				h=m;
			else
				l=m;
		}
		
		return (dtime-h < dtime-l) ? h : l;
	}
	
	public static void main(String[] args) {
		SortEstimate se = new SortEstimate();
		System.out.println(se.howMany(37, 12392342));
	}
}

Sabem porquê?