Cod sursa(job #479169)

Utilizator freak93Adrian Budau freak93 Data 23 august 2010 10:31:06
Problema Garaj Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<algorithm>
#define camion pair<int,int>
#define x first
#define y second

using namespace std;

const char iname[]="garaj.in";
const char oname[]="garaj.out";
const int maxn=100005;

ifstream f(iname);
ofstream g(oname);

camion a[maxn];

int n,i,m,step;

int many(int x)
{
    long long s=0;
    for(int i=1;i<=n;++i)
        s+=a[i].x*(x/a[i].y);
    if(s>(1<<30))
        s=(1<<30);
    return s;
}

int main()
{
    f>>n>>m;
    for(i=1;i<=n;++i)
        f>>a[i].x>>a[i].y;
    for(step=(1<<30),i=0;step;step>>=1)
    {
        i+=step;
        if(many(i)>=m)
            i-=step;
    }
    ++i;
    g<<i*2<<" ";
    for(i=1;i<=n;++i)
        a[i].x=(a[i].x*(i/a[i].y));
    sort(a+1,a+n+1,greater<camion>());
    for(i=1;i<=n&&m>0;++i)
        m-=a[i].x;
    --i;
    g<<i<<"\n";
}