Cod sursa(job #2396601)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 3 aprilie 2019 17:34:38
Problema Garaj Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <algorithm>
#define mod 666013
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
struct meme{
    int c,t;
}v[100001],a[100001];
int nr,i,n,m,s,st,dr,mid,tmin;
bool verif(int x){
    long long S=0;
    for(i=1;i<=n;i++)
        S+=v[i].c*(x/v[i].t);
    if(S>=m)
        return 1;
    return 0;
}
int cmp(meme a,meme b){
    if(a.c==b.c)
        return a.t<b.t;
    return a.c>b.c;
}
int main()
{   f>>n>>m;
    for(i=1;i<=n;i++){
        f>>v[i].c>>v[i].t;
        v[i].t*=2;
    }
    st=1;dr=(1<<30);
    while(st<=dr){
        mid=(st+dr)/2;
        if(verif(mid)==1){
            dr=mid-1;
            tmin=mid;
        }
        else
            st=mid+1;
    }
    g<<tmin<<' ' ;
    for(i=1;i<=n;i++){
        a[i].c=v[i].c*(tmin/v[i].t);
        a[i].t=i;
    }
    sort(a+1,a+n+1,cmp);
    s=0;nr=0;
    while(s<m){
        s=s+a[++nr].c;
    }
    g<<nr;
    return 0;
}