Cod sursa(job #1573144)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 19 ianuarie 2016 13:59:31
Problema Garaj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
# include <fstream>
# include <algorithm>
# define DIM 100010
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
long long s,t[DIM],c[DIM],i,n,m,st,dr,mij,trans[DIM],k,nr;
long long maxtrans(int r){
    long long s=0;
    for(int i=1;i<=n;i++){
        s+=(r/t[i])*c[i];
    }
    return s;
}

int main () {
    fin>>n>>m;
    for(i=1;i<=n;i++){
        fin>>c[i]>>t[i];
        t[i]*=2;
    }
    st=1;
    dr=(m/c[1] + 1)*t[1];
    while(st<=dr){
        mij=(st+dr)/2;
        if(maxtrans(mij)>=m)
            dr=mij-1;
        else
            st=mij+1;
    }
    fout<<st<<" ";
    for(i=1;i<=n;i++){
        trans[i]=(st/t[i])*c[i];
    }
    sort(trans+1,trans+n+1);
    k=n;
    s = 0;
    while(s<m){
        s+=trans[k];
        k--;
        nr++;
    }
    fout<<nr;
    return 0;
}