Pagini recente » Cod sursa (job #2351138) | Cod sursa (job #1759197) | Cod sursa (job #145260) | Cod sursa (job #86775) | Cod sursa (job #2007811)
#include <iostream>
#include <fstream>
#include <algorithm>
#define MAX 2000000000
using namespace std;
ifstream si("garaj.in");
ofstream so("garaj.out");
int c[100005],t[100005];
int main()
{
int n,m;
si>>n>>m;
for(int i=1;i<=n;++i)
{
si>>c[i]>>t[i];
t[i]*=2;
}
int s,r=MAX;
for(int st=1,dr=MAX,mij=(st+dr)>>1;st<=dr;mij=(st+dr)>>1)
{
s=0;
for(int i=1;i<=n&&s<m;++i)
s+=(mij/t[i])*c[i];
if(s>=m)
{
dr=mij-1;
r=min(mij,r);
}
else
{
st=mij+1;
}
}
for(int i=1;i<=n;++i)
t[i]=-((r/t[i])*c[i]);
sort(t+1,t+n+1);
int rasp;
for(rasp=0,s=0;rasp<n&&s<m;++rasp)
s-=t[rasp+1];
so<<r<<' '<<rasp;
return 0;
}