Cod sursa(job #3178782)

Utilizator LucasSecaraSecara Lucas Victor LucasSecara Data 2 decembrie 2023 14:37:32
Problema Garaj Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 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];

int cateSticle(long long t){
    int 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;
        int 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;
}