Cod sursa(job #253403)

Utilizator thebest001Neagu Rares Florian thebest001 Data 5 februarie 2009 19:11:24
Problema Plus Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 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",&s);
	scanf("%lld %lld",&na,&a);
	scanf("%lld %lld",&nb,&b);
	scanf("%lld %lld",&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;
}