Cod sursa(job #138029)

Utilizator za_wolfpalianos cristian za_wolf Data 17 februarie 2008 19:55:38
Problema Garaj Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
/*
ID: za_wolf1
LANG: C++
TASK: meteor
*/
#include<stdio.h>
//#include<algorithm>
#define NMAX 100005
//using namespace std;
long long a,x[NMAX],y[NMAX],n,k,i,in,sf,q,m;
struct kkt
{
	long long X,Y;
};
kkt qq[NMAX];
int cmpf(const kkt a,const kkt b)
{
	return ((a.X/a.Y)>(b.X/b.Y));
}
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;
		qq[i].X=x[i];
		qq[i].Y=y[i];
	}

	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);
	a=1;
	while (a)
	{
		a=0;
		for (i=1;i<n;i++)
			if (((float)x[i]/y[i])<((float)x[i+1]/y[i+1]))
			{
				a=x[i];
				x[i]=x[i+1];
				x[i+1]=a;
				a=y[i];
				y[i]=y[i+1];
				y[i+1]=a;
				a=1;
			}
	}
	a=0;
/*	sort(qq+1,qq+n+1,cmpf);
	for (i=1;i<=n;i++)
	{
		x[i]=qq[i].X;
		y[i]=qq[i].Y;
	} */
	q=0;
	for (i=1;i<=n;i++)
	{
		q+=(m/y[i])*x[i];
		if (q>=k)
		{
			a=i;
			i=n;
		}
	}
	if (a==0) a=1;
	printf("%lld\n",a);

	return 0;
}