Cod sursa(job #3180597)

Utilizator Andrei1105Andre Loga Andrei1105 Data 5 decembrie 2023 17:13:44
Problema Garaj Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
struct
{
    int timp;
    int cantitate;
} v[100001];
long long n, m, a[100001];
long long cateSticle(long long t)
{
    long long r=0;
    for (int i=1; i <= n; i++)
    {
        r+=(t/v[i].timp)*v[i].cantitate;
        if (r>=m) break;
    }
    return r;
}
int cb(int m)
{
    long long st = 1, dr=m*m, mij;
    while(st <= dr)
    {
        mij = (st+dr)/2;
        long long s =cateSticle(mij);
        if (s<m)
        {
            st=mij+1;
        }

        else
        {
            dr = mij-1;
        }
    }

    return st;
}
int main()
{
    fin >> n >> m;
    for (int i=1; i <= n; i++)
    {
        fin >> v[i].cantitate >> v[i].timp;
        v[i].timp *= 2;
    }
    int t = cb(m);
    fout << t << ' ';
    for (int i=1; i<=n; i++)
    {
        a[i] = (t/v[i].timp)*v[i].cantitate;
        sort(a+1, a+n+1, greater<int>());
    }
    int s=0;
    for (int i=1; i <= n; i++)
    {
        m -= a[i];
        s++;
        if (m <= 0) break;
    }
    fout << s;
    return 0;
}