Cod sursa(job #1536862)

Utilizator robx12lnLinca Robert robx12ln Data 26 noiembrie 2015 18:50:29
Problema Garaj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<cstdio>
#include<algorithm>
#define c first
#define t second
using namespace std;
FILE * fin = fopen("garaj.in","r");
FILE * fout = fopen("garaj.out","w");
long long n, m, p ,u,mid, x[100005],cars;
pair<long long,long long> v[100005];
int verif( long long T ){
    cars = 0;
    for( long long i = 1; i <= n; i++ ){
        x[i] = ( T / (v[i].t * 2) ) * v[i].c ;
    }
    sort( x + 1, x + n + 1 );
    long long k = m;
    for( long long  i = n; i >= 1; i-- ){
        cars++;
        k -= x[i];
        if( k <= 0){
            return 1;
        }
    }
    if( k > 0 )
        return 0;
    else{
        return 1;
    }
}
int main(){
    fscanf(fin,"%lld %lld",&n,&m);
    for ( long long  i = 1; i <= n; i++ ){
        fscanf(fin,"%lld %lld",&v[i].c,&v[i].t);
    }
    p = 1;
    u = m * 1LL * 1000;
    while( p <= u ){
        mid = ( p + u ) / 2;
        if( verif(mid) == 1 ){
            u = mid -1;
        }else{
            p = mid + 1;
        }
    }
    u = verif(p);
    fprintf(fout,"%lld %lld",p,cars);
    return 0;
}