Cod sursa(job #173268)

Utilizator razvi9Jurca Razvan razvi9 Data 7 aprilie 2008 16:10:08
Problema Plus Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>
long long a,b,c,na,nb,nc,i,nr,s,number;
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);
	for(i=0;i<=na;i++)
	{
		if(i)
			s-=a;
		if(b==0)
			if(c==0)
				number+= (s==0)*(nb+1)*(nc+1);
			else
			{
				nr=s/c;
				number += (nr*c==s && nr<=nc && nr>=0)*(nb+1);
			}
		else
			if(c==0)
			{
				nr=s/b;
				number += (nr*b==s && nr>=0 && nr<=nb)*(nc+1);
			}
			else
			{
				if(c==b)
				{
					if(s)
					{
						nr=s/b;
						number +=(nr>=0 && nr<=nb+nc)*(m(nb+nc-nr,m(nb,nc))+1);
					}
					else
						number++;

				}
				else
				{
					if(s)
					{
						nr=s/b;
						if(nr>=0 && nr<=nb)
							number += m(nb-nr,nc)+1;
						else
						{
							nr=s/c;
							if(nr>=0 && nr<=nc)
								number += m(nc-nr,nb)+1;
						}
					}
					else number++;
				}
			}
	}
	printf("%lld\n",number);
	fclose(stdout);
	return 0;
}