Pagini recente » Cod sursa (job #3352882) | Cod sursa (job #3329064) | Cod sursa (job #3329294) | Cod sursa (job #46395) | Cod sursa (job #3338071)
#include <fstream>
#include <algorithm>
#define ll long long
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
ll n,m,c[1001],t[1001],s[1001],st,totals;
ll cb(ll timp){
ll total=0;
for(ll i=1;i<=n;i++){
ll nrj=timp/(2*t[i]);
ll stic=c[i]*nrj;
total+=stic;
}
return total;
}
bool cmp(ll x,ll y){
if(x>y)return true;
return false;
}
int main()
{
fin>>n>>m;
for(ll i=1;i<=n;i++){
fin>>c[i]>>t[i];
totals+=t[i];
}
ll st=0,dr=1e15;
ll sol=dr;
while(st<=dr){
ll mid=st+(dr-st)/2;
if(cb(mid)>=m){
dr=mid-1,sol=mid;
}else st=mid+1;
}
sort(c+1,c+n+1,cmp);
ll stic = 0,nrmin=0;
for (ll i=1;i<=n;i++) {
ll tra=(sol-t[i])/(2*t[i])+1;
s[i]=tra*c[i];
if(t[i]>sol)s[i]=0;
}
sort(s+1,s+n+1,cmp);
for(ll i=1;i<=n && stic<m;i++){
if(s[i]>0)
stic+=s[i],nrmin++;
}
fout<<sol<<" "<<nrmin;
return 0;
}