Cod sursa(job #1573178)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 19 ianuarie 2016 14:35:06
Problema Garaj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
# include <cstdio>
# include <algorithm>
# define DIM 100010
using namespace std;

FILE *fin = fopen("garaj.in", "r");
FILE *fout = fopen("garaj.out", "w");

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 () {
    fscanf(fin, "%lld%lld", &n, &m);
    for(i=1;i<=n;i++){
        fscanf(fin, "%lld%lld", &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++;
    }
    fprintf(fout,"%lld %lld\n", st, nr);
    return 0;
}