Pagini recente » Cod sursa (job #1452804) | Cod sursa (job #2150516) | Cod sursa (job #2959464) | Cod sursa (job #114656) | Cod sursa (job #1145763)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int n,m,a[100002],b[100002],st,ok1,ok2,dr,mid,sp,rez,i,j,k;
int d[100002];
int ver(int k)
{
long long sp=0;
for(i=1;i<=n;i++)
{
d[i]=(k/b[i])*a[i];
sp+=d[i];
}
if(sp>=m) return 1;
return 0;
}
void getrez()
{
long long s;
sort(d+1,d+n+1);
s=0;
for(i=n;i>=1;i--)
{
s+=d[i];
if(s>=m) rez=n-i+1,i=0;
}
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
f>>a[i]>>b[i];
st=1;
dr=m+2000;
while(st<=dr)
{
mid=(st+dr)/2;
ok2=ver(mid-1);
ok1=ver(mid);
if(ok1==1,ok2==0)
{
getrez();
g<<mid*2<<" "<<rez;
return 0;
}
else if(ok1==1&&ok2==1) dr=mid-1;
else st=mid+1;
}
return 0;
}