Cod sursa(job #2911532)

Utilizator carinamariaCarina Maria Viespescu carinamaria Data 30 iunie 2022 12:43:04
Problema Garaj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("garaj.in");
ofstream cout("garaj.out");
long long i, j, n, m, st, dr, mid, s;
long long c[100005], v[100005], t[100005];
long long f(long long j){
    long long s=0;
    for(int i=1;i<=n;i++){
        s+=j/t[i]*c[i];
        if(s>m)
            return s;
    }
    return s;
}
int main() {
    cin>>n>>m;
    for (i=1;i<=n;i++) {
        cin>>c[i]>>t[i];
        t[i]*=2;
    }
    st=1;
    dr=2000000000000;
    while (st<=dr) {
        mid=(st+dr)/2;
        s=f(mid);
        if (s<m)
            st=mid+1;
        else
            dr=mid-1;
    }
    cout<<st<<" ";
    for (i=1;i<=n;i++)
        v[i]=st/t[i]*c[i];
    sort(v+1, v+n+1);
    s=0;
    for (i=n;i>=1 && s<m;i--)
        s+=v[i];
    cout<<i+1;
}