Cod sursa(job #2656029)

Utilizator refugiatBoni Daniel Stefan refugiat Data 6 octombrie 2020 17:04:53
Problema Garaj Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream si("garaj.in");
ofstream so("garaj.out");
int c[100005], t[100005];
int main() {
    int n, m;
    si>>n>>m;
    for(int i=1; i<=n; ++i) {
        si>>c[i]>>t[i];
        t[i]*=2;
    }

    int sum, ans=2000000000;
    int st=1, dr=2000000000;
    while(st<=dr) {
        int mij=(st+dr)>>1;
        sum=0;
        for(int i=1; i<=n&& sum<m; ++i)
            sum+=(mij/t[i])*c[i];
        if(sum>=m) {
            dr=mij-1;
            ans=min(mij, ans);
        }
        else
            st=mij+1;
    }
    for(int i=1; i<=n; ++i)
        t[i]=(ans/t[i])*c[i];
    sort(t+1, t+n+1);
    int rasp;
    sum=0;
    for(rasp=0; rasp<n&&sum<m; ++rasp)
        sum+=t[n-rasp];
    so<<ans<<' '<<rasp;
    return 0;
}