Cod sursa(job #3255770)

Utilizator Radu_GrigorieGrigorie Radu Stefan Radu_Grigorie Data 12 noiembrie 2024 13:02:35
Problema Garaj Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
struct nr
{
    long long p;
    long long max;
    long long timp;
};
nr v[100005];
bool cmp(nr a, nr b)
{
    return a.p>b.p;
}
int main()
{
    long long n, m;
    fin >> n >> m;
    for(long long i=1; i<=n; i++)
    {
        fin >> v[i].max >> v[i].timp;
        v[i].timp*=2;
    }
    long long st=0, dr=100000000001, mid;
    while(st<dr-1)
    {
        mid=(st+dr)/2;
        long long nrs=0;
        for(long long i=1; i<=n; i++)
        {
            long long x=mid/v[i].timp;
            nrs+=x*v[i].max;
        }
        if(nrs>=m)
            dr=mid;
        else
            st=mid;
    }
    fout << dr;
    for(long long i=1; i<=n; i++)
    {
        v[i].p=(dr/v[i].timp)*v[i].max;
    }
    sort(v+1, v+n+1, cmp);
    long long tmp=0;
    for(long long i=1; i<=n; i++)
    {
        if(tmp<=m&&v[i].p)
            tmp+=v[i].p;
        else
        {
            fout << " " << i-1;
            return 0;
        }
    }
    fout << " " << n;
    return 0;
}