Cod sursa(job #470541)

Utilizator mihai995mihai995 mihai995 Data 14 iulie 2010 15:09:36
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
using namespace std;

struct camion{short int c,t;} v[1<<17];
int n,m,x;

ifstream in("garaj.in");
ofstream out("garaj.out");

bool ok(long long x)
{
	long long c=0;
	for (int i=1;i<=n;i++)
	{
		c+=v[i].c*(x/v[i].t);
		if (c>=m)
			return true;
	}
	return false;
}

int bsearch()
{
	long long i,step=(long long)1<<40;
	for (i=0;step;step>>=1)
		if (!ok(i+step))
			i+=step;
	return i+1;
}

bool cmp(camion a,camion b)
{
	return a.c*(x/a.t)>b.c*(x/b.t);
}

int main()
{
	int i,s=0;
	in>>n>>m;
	for (i=1;i<=n;i++)
	{
		in>>v[i].c>>v[i].t;
		v[i].t<<=1;
	}
	x=bsearch();
	sort(v+1,v+n+1,cmp);
	for (i=1;i<=n;i++)
	{
		s+=v[i].c*(x/v[i].t);
		if (s>=m)
			break;
	}
	out<<x<<" "<<i<<"\n";
	return 0;
}