Cod sursa(job #138093)

Utilizator za_wolfpalianos cristian za_wolf Data 17 februarie 2008 20:47:08
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<algorithm>
#define NMAX 100205
using namespace std;
long long a,x[NMAX],y[NMAX],n,k,i,in,sf,q,m;

int cmpf2(const long a,const long b)
{
	return (a>b);
}
int main()
{
	freopen("garaj.in","r",stdin);
	freopen("garaj.out","w",stdout);
	scanf("%lld%lld",&n,&k);
	for (i=1;i<=n;i++)
	{
		scanf("%lld%lld",&x[i],&y[i]);
		y[i]=y[i]*2;
	}

	in=1;
	sf=k;
	y[n+1]=m+1;
	x[n+1]=0;
	while (in<sf)
	{
		m=(in+sf)/2;
		q=0;
		for (i=1;i<=n+1&&q<k;i++)
			q+=(m/y[i])*x[i];
		if (i<=n+1)
			sf=m;
		else
			in=m+1;
	}
	if (in==sf) m=in;
	else
	m=sf;
	printf("%lld ",m);
	for (i=1;i<=n;i++)
		x[i]=(m/y[i])*x[i];
	sort(x+1,x+n+1,cmpf2);
	q=0;
	for (i=1;i<=n;i++)
	{
		q+=x[i];
		if (q>=k)
		{
			a=i;
			i=n;
		}
	}
	printf("%lld\n",a);
	return 0;
}