# include using namespace std; const long long maxn = 5e5+5; struct segment { pair segm[maxn]; double lazy[maxn]; void recalc(long long v, long long l, long long r) { if(lazy[v]==0)return ; segm[v].first+=lazy[v]; if(l!=r) { lazy[2*v]+=lazy[v]; lazy[2*v+1]+=lazy[v]; } lazy[v] = 0; } void update(long long v, long long from, long long to, long long l, long long r, double delta) { recalc(v,from,to); if(l<=from&&to<=r) { lazy[v]+=delta; if(l==r) segm[v].second = l; recalc(v,from,to); return ; }long long mid = (from+to)/2; recalc(2*v,from,mid); recalc(2*v+1,mid+1,to); if(l<=mid)update(2*v,from,mid,l,r,delta); if(r>mid)update(2*v+1,mid+1,to,l,r,delta); segm[v] = min(segm[2*v],segm[2*v+1]); } pair query(long long v, long long from, long long to, long long l, long long r) { recalc(v,from,to); if(l<=from&&to<=r) { return segm[v]; } long long mid = (from+to)/2; recalc(2*v,from,mid); recalc(2*v+1,mid+1,to); pair ans; if(l<=mid)ans = query(2*v,from,mid,l,r); if(r>mid)ans = min(ans,query(2*v+1,mid+1,to,l,r)); return ans; } }; segment S; struct queries { long long x,id,m; double ans; }; queries p[maxn]; bool cmp (queries i, queries j) { return i.x>n>>v; for(i=1;i<=n;i++) { cin>>p[i].x>>p[i].m; p[i].id = i; } sort(p+1,p+n+1,cmp); long long from = 1; for(i=1;i<=n;i++) { S.update(1,1,n,i,i,p[i].m); } double last = 0.0; long long left = 0; for(i=1;i<=n;i++) { // cout<