// Arup Guha
// 3/9/2024
// Solution to Kattis Problem: Need for Speed
// https://open.kattis.com/problems/speed

import java.util.*;

public class speed {

	public static int n;
	public static double[] dist;
	public static double[] mph;
	public static int t;
	
	public static void main(String[] args) {
	
		// Get basic input.
		Scanner stdin = new Scanner(System.in);
		n = stdin.nextInt();
		t = stdin.nextInt();
		dist = new double[n];
		mph = new double[n];
		
		// Read in each segment.
		for (int i=0; i<n; i++) {
			dist[i] = stdin.nextDouble();
			mph[i] = stdin.nextDouble();
		}
		
		// Ta da!
		System.out.println(solve());
	}
	
	public static double solve() {
	
		double minVal = mph[0];
		for (int i=1; i<n; i++)
			minVal = Math.min(minVal, mph[i]);
		
		// Safe low and high bounds for the answer.
		double low = -minVal, high = 2000000;
		
		// For real valued binary searches I just run them a fixed # of times.
		for (int i=0; i<100; i++) {
		
			// Guess for offset.
			double mid = (low+high)/2;
			
			// Calculate trip time for this offset.
			double thisT = 0;
			for (int j=0; j<n; j++)
				thisT += dist[j]/(mph[j]+mid);
				
			// This is too slow, we must speed up.
			if (thisT > t)
				low = mid;
			else
				high = mid;
		}
	
		// Ta da!
		return low;
	}
}