Cod sursa(job #982419)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 9 august 2013 11:17:42
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
struct da
{
    unsigned c,t;
}v[100005];
unsigned x[100005];
int main()
{
    freopen("garaj.in","r",stdin);
    freopen("garaj.out","w",stdout);
    unsigned n,m,i,st,dr,mi,s,t,w=0;
    scanf("%u%u",&n,&m);
    for(i=1;i<=n;i++)
    {
        scanf("%u%u",&v[i].c,&v[i].t);
        v[i].t=v[i].t*2;
    }
    dr=t=2000000000;
    st=1;
    while(st<=dr)
    {
    mi=(st+dr)/2;
    s=0;
    for(i=1;i<=n;i++)
    {
        s=s+mi/v[i].t*v[i].c;
        if(s>=m)
            break;
    }
    if(i<=n)
    {
    t=mi;
    dr=mi-1;
    }
    else
        st=mi+1;
    }
    for(i=1;i<=n;i++)
    x[i]=(t/v[i].t)*v[i].c;
    sort(x+1,x+n+1);
    for(i=n;i>=1;i--)
    {
        if(m>=x[i])
        {
            m=m-x[i];
        }
        else
            break;
        w++;
    }
    if(m!=0)
        w++;
    printf("%u %u\n",t,w);
    return 0;
}