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);
	}
}
