import std.stdio, std.algorithm, std.range;

int N, W;
int[] ws, vs;

void main(){
	init;
	writefln("%.5f", solve);
}

void init(){
	scanf("%d%d", &N, &W);
	foreach(i; 0..N){
		int w, v;
		scanf("%d%d", &w, &v);
		ws ~= w;
		vs ~= v;
	}
}

double solve(){
	int[] nws, nvs;
	double V = 0;
	foreach(w, v; zip(ws, vs)){
		if(w <= 0 && v >= 0){
			W -= w;
			V += v;
		}
		else if(w > 0 && v > 0){
			nws ~= w;
			nvs ~= v;
		}
		else if(w < 0 && v < 0){
			W -= w;
			V += v;
			nws ~= -w;
			nvs ~= -v;
		}
	}
	sort!"a[0]*b[1] > a[1]*b[0]"(zip(nvs, nws));

	foreach(w, v; zip(nws, nvs)){
		if(W >= w){
			W -= w;
			V += v;
		}
		else{
			V += cast(double)W / w * v;
			break;
		}
	}

	return V;
}