Pagini recente » Cod sursa (job #1130941) | Cod sursa (job #180447) | Cod sursa (job #1117249) | Cod sursa (job #2616288) | Cod sursa (job #3225466)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
short t[100005];
short c[100005];
int main()
{
ifstream fin("garaj.in");
ofstream fout("garaj.out");
long long int st,i,dr,mid,sol,cont;
int N,M;
fin>>N>>M;
for(i=1;i<=N;i++)
{
fin>>c[i]>>t[i];
t[i]*=2;
}
st=1;
dr=1e16;
while(st<=dr)
{
cont=0;
mid=(st+dr)/2;
for(i=1;i<=N;i++)
{
cont+=c[i]*(mid/t[i]);
}
if(cont<M)
{
st=mid+1;
}
else
{
sol=mid;
dr=mid-1;
}
}
fout<<sol<<' ';///Avem timpul
cont=0;
for(i=1;i<=N;i++)
{
c[i]*=(sol/t[i]);///Cat poate transporta camionul i(capacitatea*drumuri)
}
sort(c+1,c+N+1);///Ultimele duc cele mai mult
for(i=N;i>=1;i--)
{
cont+=c[i];
if(cont>=M)
{
fout<<N-i+1;///Pana unde trebuie sa mergem ca sa gasim cate avem nevoie
return 0;
}
}
return 0;
}