Pagini recente » Cod sursa (job #1464525) | Cod sursa (job #1672740) | Cod sursa (job #2751764) | Cod sursa (job #1520233) | Cod sursa (job #1466483)
#include<fstream>
#include<iostream>
#include<algorithm>
using namespace std;
ifstream f("garaj.in"); ofstream g("garaj.out");
const int maxn = 100003;
const int smax = 2000000000;
struct camion {int c,t,s;} v[maxn];
int N,M,sum,T=smax,sol,i;
inline bool mycomp(camion a,camion b)
{ return a.s>b.s;}
int main()
{ f>>N>>M;
for(i=1;i<=N;++i) {f>>v[i].c>>v[i].t; v[i].t*=2;}
int st=1,dr=smax,mid;
while(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--; g<<T<<" "<<sol<<'\n';
g.close(); return 0;
}