Cod sursa(job #322227)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 8 iunie 2009 12:34:21
Problema Garaj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <stdlib.h>
#define N 100005
int n,m,tmin,nrmin;
struct camion
{
	int a,b;//a= capacitate; b=timp pt un transport
};
camion v[N];
void read()
{
	scanf("%d%d",&n,&m);
	int i;
	for (i=1; i<=n; i++)
		scanf("%d%d",&v[i].a,&v[i].b);
}
int compar(const void *p,const void*q)
{
	camion x=*(camion*)p;
	camion y=*(camion*)q;
	if (x.a>y.a)
		return -1;
	if (x.a<y.a)
		return 1;
	return 0;
}
void the_sort()
{
	qsort(v+1,n,sizeof(v[0]),compar);
}
int calc(int p)
{
	int i,s=0,salv;
	for (i=1; i<=n; i++)
	{
		salv=p;
		while (salv>=2*v[i].b)
		{
			s+=v[i].a;
			salv-=v[i].b*2;
		}
	}
	return s;
}
int cbin()
{
	int st=1,dr=15,mij,t,rez;
	while (st<=dr)
	{
		mij=(st+dr)/2;
		t=calc(mij);
		if (t>m)
		{
			dr=m-1;
			rez=mij;
		}
		else
			st=m+1;
	}
	return rez;
}
void solve()
{
	tmin=cbin();
	printf("%d\n",tmin);
}
int main()
{
	freopen("garaj.in","r",stdin);
	freopen("garaj.out","w",stdout);
	read();
	the_sort();
	solve();
	return 0;
}