Cod sursa(job #1938343)

Utilizator Vlad3108Tir Vlad Ioan Vlad3108 Data 24 martie 2017 19:25:08
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstdio>
#include <algorithm>
using namespace std;
#define LMAX 100005
int n,m;
struct camion{
    int c,t;
}v[LMAX];
int T[LMAX];
inline bool Sol(int x){
    int no=0;
    for(int i=1;i<=n;++i){
        no+=(x/v[i].t)*v[i].c;
        if(no>=m) break;
    }
    if(no>=m) return 1;
    return 0;
}
int main(){
    freopen("garaj.in","r",stdin);
    freopen("garaj.out","w",stdout);
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;++i){
        scanf("%d %d",&v[i].c,&v[i].t);
        v[i].t*=2;
    }
    int p=1,u=(1<<30);
    while(p<=u){
        int mij=(p+u)/2;
        if(Sol(mij)) u=mij-1;
        else p=mij+1;
    }
    int no=0;
    for(int i=1;i<=n;++i){
        T[i]=(p/v[i].t)*v[i].c;
        no+=T[i];
    }
    sort(T+1,T+n+1);
    int Min=n,i=1;
    while(no>=m){
        no-=T[i];
        ++i;
        if(no<m) break;
        --Min;
    }
    printf("%d %d\n",p, Min);
    return 0;
}