#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef long double ld;
struct point{
	int x; ld y;
	bool operator <(const point b)const{
		return y*b.x<b.y*x;
	}
}q[500005];
int head,tail;
int main(){
	int n,l;
	scanf("%d%d",&n,&l);
	ld allt=0;int allv=0;
	int head=0,tail=-1;
	for(int i=1;i<=n;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		point v=(point){y,(ld)x*y};
		allt+=v.y; allv+=v.x;
		while(allv>l){
		//	printf("%d %.6lf\n",allv,(double)allt);
			if(allv-q[head].x>=l){
				allt-=q[head].y;
				allv-=q[head].x;
				head++;
			}else{
				ld v=q[head].y*(allv-l)/q[head].x;
				q[head].x-=allv-l;
				allv=l;
				q[head].y-=v;
				allt-=v;
			}
		}
		//printf("%d %.6lf\n",allv,(double)allt);
		printf("%.6lf\n",(double)(allt/allv));
		while(tail>=head&&v<q[tail]){
			v.y+=q[tail].y;
			v.x+=q[tail].x;
			tail--;
		}
		q[++tail]=v;
	}
	return 0;
}
