Cod sursa(job #485340)

Utilizator DraStiKDragos Oprica DraStiK Data 18 septembrie 2010 09:59:49
Problema Plus Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <algorithm>
using namespace std;

#define DIM 5

long long nr[DIM],v[DIM],minval[DIM],maxval[DIM];
long long nrt,s;

void read ()
{
    int i;

    scanf ("%lld",&s);
    for (i=1; i<=3; ++i)
        scanf ("%lld%lld",&nr[i],&v[i]);
}

void solve ()
{
    int i;

    s+=v[1];
    for (i=2; i<=3; ++i)
    {
        minval[i]=min (0LL,nr[i]*v[i]);
        maxval[i]=max (0LL,nr[i]*v[i]);
    }
    for (i=0; i<=nr[1]; ++i)
    {
        s-=v[1];
        if (!v[2])
        {
            if (!v[3])
            {
                if (!s)
                    nrt+=(nr[2]+1)*(nr[3]+1);
            }
            else
            {
                if (s/v[3]<=nr[3] && s/v[3]>=0)
                    nrt+=nr[2]+1;
            }
        }
		else
		{
		    if (!v[3])
		    {
		        if (s/v[2]<=nr[2] && s/v[2]>=0)
                    nrt+=nr[3]+1;
		    }
		    else
                nrt+=max (0LL,min (s-minval[2],maxval[3])-max (s-maxval[2],minval[3])+1);
		}
    }
    printf ("%lld",nrt);
}

int main ()
{
    freopen ("plus.in","r",stdin);
    freopen ("plus.out","w",stdout);

    read ();
    solve ();

    return 0;
}