Cod sursa(job #1536762)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 26 noiembrie 2015 17:17:53
Problema Garaj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
#include<algorithm>
using namespace std;
int n, m, i;
long long p, u, mid, sum, r[1005];
int c[1005], t[1005];
ifstream fin("garaj.in");
ofstream fout("garaj.out");
int f(long long mid){
    int i;
    long long sum = 0;
    for(i = 1; i <= n; i++){
        sum = sum + (mid / t[i]) * 1LL * c[i];
    }
    if(sum >= m){
        return 1;
    }
    return 0;
}
int main(){
    fin>> n >> m;
    p = 1;
    u = 1000000000000LL;
    for(i = 1; i <= n; i++){
        fin>> c[i] >> t[i];
        t[i] *= 2;
        //u = min(u, t[i] * 1LL * m / c[i] + t[i]);
    }
    while(p <= u){
        mid = (p + u) / 2;
        if(f(mid)){
            u = mid - 1;
        }
        else{
            p = mid + 1;
        }
    }
    fout<< p <<" ";
    for(i = 1; i <= n; i++){
        r[i] = (p / t[i]) * 1LL * c[i];
    }
    sort(r + 1, r + n + 1);
    for(i = n; i >= 1; i--){
        sum += r[i];
        if(sum >= m){
            fout<< n - i + 1 <<"\n";
            break;
        }
    }
    return 0;
}