Cod sursa(job #1120032)

Utilizator margikiMargeloiu Andrei margiki Data 24 februarie 2014 21:15:52
Problema Garaj Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
# include <fstream>
# include <algorithm>
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int TIMP,i,j,minn,n,M,VV,pot[100005];
struct elem
{
    int c, timp;
}a[100005];
int cmp (elem x, elem y)
{
    if (x.timp>=y.timp) return 0;
        else return 1;
    return 1;
}
void cb ()
{
    int i,sum,ci=1,cs=2*n,mij;
    while (ci<=cs)
    {
        mij=(ci+cs)/2;
        sum=0; VV=0;
        for (i=1; i<=n; ++i)
        {
            ++VV;
            if (2*a[i].timp<=mij)
            {
                sum+=mij/(2*a[i].timp)*a[i].c;
            }
            else break;
            if (sum>=M) break;
        }
        if (sum>=M) TIMP=mij,cs=mij-1;
            else ci=mij+1;
    }
}
void numara ()
{
    int i,sum=0;;
    for (i=1; i<=n; ++i)
        pot[i]=TIMP/(2*a[i].timp)*a[i].c;
    sort (pot+1,pot+n+1);
    for (i=n; i>=1; --i)
    {
        ++minn;
        sum+=pot[i];
        if (sum>=M) break;
    }
}
int main ()
{
    f>>n>>M;
    for (i=1; i<=n; ++i)
        f>>a[i].c>>a[i].timp;
    sort (a+1,a+n+1,cmp);
    cb (); numara ();
    g<<TIMP<<" "<<minn<<"\n";
    return 0;
}