import java.io.BufferedReader; import java.io.InputStreamReader; public class jeroenb { static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); public static void main(String[] args) throws Exception { // Read the input String[] ps = in.readLine().split(" "); int n = Integer.valueOf(ps[0]); int w = Integer.valueOf(ps[1]); int[] p = new int[n]; int[] t = new int[n]; for (int i = 0; i < n; i++) { ps = in.readLine().split(" "); p[i] = Integer.valueOf(ps[0]); t[i] = Integer.valueOf(ps[1]); } // Binary search for the time, and check if we can do it in that time double low = 0; double up = 3e9; for (int times = 0; times < 100; times++) { double time = (low + up) / 2; // Greedily use all time for each mill and check // how much we can grind in that time double total = 0; for (int i = 0; i < n; i++) { double grindTime = time - t[i] * 2; if (grindTime < 0) continue; total += grindTime * p[i]; } // Is this enough time? Then we might use less, // else we need more if (total >= w) up = time; else low = time; } System.out.println(low); } }