Pagini recente » Cod sursa (job #3137365) | Cod sursa (job #1422894) | Cod sursa (job #507280) | Cod sursa (job #2391958) | Cod sursa (job #1399508)
# include <fstream>
# include <iostream>
# include <algorithm>
using namespace std;
const int maxn = 100003;
const int smax = 2000000000;
struct camion
{
int c,t,s;
} v[maxn];
int N,M,sum,T=1<<20,sol,i;
inline bool mycomp(camion a,camion b)
{
return a.s>b.s;
}
int main()
{
ifstream in ("garaj.in");
ofstream out ("garaj.out");
in>>N>>M;
for(i=1; i<=N; ++i)
{
in>>v[i].c>>v[i].t;
v[i].t*=2;
}
int st=1,dr=smax,mid;
for(; st<=dr;)
{
mid=(st+dr)/2;
sum=0;
for(int i=1; i<=N && sum<M ; i++)
sum+=mid/v[i].t*v[i].c;
if (sum>=M)
{
dr = mid-1;
if(T>mid)
T=mid;
}
else
st=mid+1;
}
for(i=1; i<=N; ++i)
v[i].s=(T/v[i].t)*v[i].c;
sort(v+1,v+N+1,mycomp);
sum=0;
for(sol=1; sol<=N && sum<M ; sol++)
{
sum+=v[sol].s;
}
sol--;
out<<T<<" "<<sol;
return 0;
}