Pagini recente » Cod sursa (job #999527) | Cod sursa (job #1813122) | Cod sursa (job #975184) | Cod sursa (job #2739406) | Cod sursa (job #1392877)
#include <fstream>
#include <algorithm>
#include <cstring>
#define nmax 100005
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
struct camion{int c;int t;} v[nmax];
int di[nmax];
int n,m,ns,sol,sol2;
char s[15];
inline int getnum()
{
int x=0;
while (s[ns]&&s[ns]!=' ')
x=x*10+s[ns++]-'0';
ns++;
return x;
}
int check(int k)
{
int i;
long long r=0;
for (i=1;i<=n;i++)
{r+=1LL*(k/v[i].t)*v[i].c;
if (r>=m*1LL)
return 1;
}
return 0;
}
int main()
{
int i,j,st,dr,mij;
f>>n>>m;f.get();
for (i=1;i<=n;i++) {
memset(s,0,sizeof(s));
ns=0;
f.getline(s,15);
v[i].c=getnum();
v[i].t=getnum()*2;
}
st=1;
dr=2000000000;
while (st<=dr) {
mij=(st+dr)>>1;
if (check(mij)) {
sol=mij;
dr=mij-1;
}
else
st=mij+1;
}
g<<sol<<' ';
for (i=1;i<=n;i++)
di[i]=(v[i].c)*(sol/v[i].t);
sort(di+1,di+n+1);
for (i=n;i>=1&&m>0;i--) {
sol2++;
m-=di[i];
}
g<<sol2<<'\n';
return 0;
}