#include<iostream>
#include<sstream>
#include<vector>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<complex>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cassert>
using namespace std;

#define rep(i,n) for(int i=0;i<(int)n;i++)
#define fr(i,c) for(__typeof(c.begin()) i=c.begin();i!=c.end();i++)
#define pb push_back
#define mp make_pair
#define all(c) c.begin(),c.end()
#define dbg(x) cerr<<#x<<" = "<<(x)<<endl

typedef vector<int> vi;
typedef pair<int,int> pi;
typedef long long ll;
const int inf=(int)1e9;
const double EPS=1e-9, INF=1e12;

bool cmp(const pi &a,const pi &b){
	return a.second*b.first>a.first*b.second;
}
int n; double W;
vector<pi> p;

int main(){
	cin>>n>>W;
	double ans=0;
	rep(i,n){
		int w,v; cin>>w>>v;
		if(w<=0&&v>=0)ans+=v, W-=w;
		else if(v<=0&&w>=0)continue;
		else if(v>0&&w>0)p.pb(mp(w,v));
		else{
			p.pb(mp(-w,-v));
			ans+=v, W-=w;
		}
	}
	sort(all(p),cmp);
	for(int i=0;i<p.size();i++){
		double use=min(1.0,W/p[i].first);
		W-=use*p[i].first;
		ans+=p[i].second*use;
		if(W<EPS)break;
	}
	printf("%.12f\n",ans);
	return 0;
}