Cod sursa(job #1536855)

Utilizator robx12lnLinca Robert robx12ln Data 26 noiembrie 2015 18:46:08
Problema Garaj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
#include<algorithm>
#define c first
#define t second
using namespace std;
ifstream cin("garaj.in");
ofstream cout("garaj.out");
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(){
    cin >> n >> m;
    for ( long long  i = 1; i <= n; i++ ){
        cin >> 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);
    cout << p << " " << cars ;
    return 0;
}