Cod sursa(job #2656035)

Utilizator refugiatBoni Daniel Stefan refugiat Data 6 octombrie 2020 17:17:14
Problema Garaj Scor 50
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;
    long long m;
    si>>n>>m;
    long long st=1, dr=0;
    for(int i=1; i<=n; ++i) {
        si>>c[i]>>t[i];
        t[i]*=2;
        dr=max(dr, m/c[i]*t[i]);
    }

    long long sum;
    while(st<=dr) {
        long long 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;
        else
            st=mij+1;
    }
    for(int i=1; i<=n; ++i)
        t[i]=(st/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<<st<<' '<<rasp;
    return 0;
}