Cod sursa(job #1025075)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 9 noiembrie 2013 14:45:36
Problema Garaj Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <algorithm>
using namespace std;
//ifstream fin ("garaj.in");
//ofstream fout ("garaj.out");
struct camioane {
    int a;
    int b;
};
camioane v[100010];
int n,m,i,j,p,u,mij,nrc,a[100010],ok,t;

int main () {

    freopen("garaj.in","r",stdin);
    freopen("garaj.out","w",stdout);

    //fin>>n>>m;
    scanf ("%d%d", &n,&m);

    for (i=1;i<=n;i++)
        scanf ("%d%d", &v[i].a, &v[i].b);
        //fin>>v[i].a>>v[i].b;
    p=1;u=2*m;
    while (p<=u) {
        mij=p+(u-p)/2; t=mij; ok=0;
        j=m;
        for(i=1; i<=n; i++){
            j-=(t/(v[i].b<<1))*v[i].a;
            if(j<1) ok=1;
        }
        if (ok==1)
            u=mij-1;
        else
            p=mij+1;
    }
    //fout<<p<<" ";
    printf("%d ", p);
    for(i=1; i<=n; i++)
        a[i]=(p/(v[i].b<<1))*v[i].a;
    sort(a+1, a+n+1);
    nrc=0;
    j=m;
    for(i=n;i>0;i--){
        j -= a[i];
        nrc++;
        if(j<1) break;
    }
    //fout<<nrc<<"\n";
    printf ("%d\n",nrc);

    return 0;
}