Pagini recente » Cod sursa (job #2404958) | Cod sursa (job #678205) | Cod sursa (job #1063459) | Cod sursa (job #2065403) | Cod sursa (job #322226)
Cod sursa(job #322226)
#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;
}