Cod sursa(job #3338071)

Utilizator mmateiMatei Barbu mmatei Data 31 ianuarie 2026 11:48:39
Problema Garaj Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#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;
}