Cod sursa(job #328811)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 3 iulie 2009 14:08:01
Problema Plus Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>

long long a,b,c,na,nb,nc,i,nr,s,number,lc,lb,rc,rb;

long long m(long long a,long long b)
{
 if(a<b) return a;
 return b;
}

long long M(long long a,long long b)
{
 if(a>b) return a;
 return b;
}

int main()
{
 freopen("plus.in","r",stdin);
 freopen("plus.out","w",stdout);
 scanf("%lld%lld%lld%lld%lld%lld%lld",&s,&na,&a,&nb,&b,&nc,&c);
 s+=a;
 rb=M(0,b*nb);
 rc=M(0,c*nc);
 lb=m(0,b*nb);
 lc=m(0,c*nc);
 for(i=0;i<=na;i++)
 {
  s-=a;
  if(b==0)
   if(c==0)
    number+= (s==0)*(nb+1)*(nc+1);
    else
    {
     nr=s/c;
     number += (nr<=nc && nr>=0)*(nb+1);
    }
   else
    if(c==0)
    {
     nr=s/b;
     number += (nr>=0 && nr<=nb)*(nc+1);
    }
     else
     {
      number+=M(0,m(s-lb,rc)-M(s-rb,lc)+1);
     }
 }
 printf("%lld\n",number);
 fclose(stdout);
 return 0;
}