Cod sursa(job #1113783)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 20 februarie 2014 21:51:01
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <algorithm>

using namespace std;

int n,m,i,st,dr,mid,nmin;

int t[100005],v[100005],c[100005];

bool verif(int tmp) {
    int x=m;
    for(int i=1;i<=n;i++) {
        x-=tmp/(2*t[i])*c[i];
        if(x<=0){
            return 1;
        }
    }
    return 0;
}


int main() {
    ifstream f("garaj.in");
    ofstream g("garaj.out");

    f>>n>>m;
    for(i=1;i<=n;i++)
        f>>c[i]>>t[i];
    st=1;dr=2*m;
    while(st<=dr) {
        mid=st+(dr-st)/2;
        if( verif(mid) )
            dr=mid-1;
        else
            st=mid+1;
    }

    for(i=1;i<=n;i++) {
        v[i]=st/(2*t[i])*c[i];
    }

    sort(v+1,v+n+1);

    for(i=n;i>=0;i--) {
        m-=v[i];
        if(m<=0) {
            nmin=n-i+1;
            break;
        }
    }

    g<<st<<" "<<nmin<<"\n";
    return 0;
}