Cod sursa(job #1116535)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 22 februarie 2014 17:37:40
Problema Garaj Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int n,m,tmin;

struct camion{
    int t,c;
} v[100001];

int cmp(camion a,camion b){
    return (a.c<b.c?0:1);
}

bool ver(int T){
    long long tr=0;
    for(register int i=1;i<=n;i++){
        tr+=(T/(2*v[i].t))*v[i].c;
    }
    return (tr>m?true:false);
}

int caut_bin(int p,int u){
    int mid,sol;
    while(p<=u){
        mid=p+(u-p)/2;
        if(ver(mid)){
            u=mid-1;
            sol=mid;
        }
        else{
            p=mid+1;
        }
    }
    return sol;
}

int main(void){
    register int i,j;

    f>>n>>m;
    for(i=1;i<=n;i++)
        f>>v[i].c>>v[i].t;

    tmin=caut_bin(1,m);

    g<<tmin<<" ";

    int maxim=0;
    for(i=1;i<=n;i++)
        v[i].c*=(tmin/(2*v[i].t));
    sort(v+1,v+n+1,cmp);
    int sum=0;
    for(i=1;i<=n;i++){
        sum+=v[i].c;
        if(sum>=m)
            break;
    }
    g<<i;
    f.close();
    g.close();
    return 0;
}