Cod sursa(job #3261092)

Utilizator vladsoartavlad sofronea vladsoarta Data 4 decembrie 2024 14:54:15
Problema Garaj Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define int long long
using namespace std;
ifstream cin("garaj.in");
ofstream cout("garaj.out");

struct ceva{
int c,t;
}v[100001];
int i,n,s;

bool verif(long long t){

    long long bottles = 0;
    for(i=1;i<=n;i++)
        bottles+=v[i].c*(t/v[i].t);

    return bottles>=s;
}

int32_t main()
{
    cin>>n>>s;
    for(i=1;i<=n;i++)
        cin>>v[i].c>>v[i].t,v[i].t = 2*v[i].t;


    long long st=0,dr=1e18;
    while(st+1<dr)
    {
        long long mid=(st+dr)>>1;
        if(!verif(mid))
            st=mid;
        else
            dr=mid;
    }

    int timp = dr;
    vector<int>vec;
    for(i=1;i<=n;i++)
        vec.push_back(v[i].c*(timp/v[i].t));

    sort(vec.begin(),vec.end());
    reverse(vec.begin(),vec.end());

    int nrcamioane=0;
    for(int h=0;h<vec.size()&&s>0;h++)
    {
        nrcamioane++;
        s-=vec[h];
    }

    cout<<timp<<" "<<nrcamioane;
    return 0;
}