Pagini recente » Cod sursa (job #185590) | Cod sursa (job #558745) | Cod sursa (job #1915554) | Cod sursa (job #287583) | Cod sursa (job #136951)
Cod sursa(job #136951)
#include<stdio.h>
long long int i,s,a,b,c,u,v,w,cc[300010],aux,sol;
void solve3();void solve2();void solve1();void solve0();
int main()
{
FILE *f,*g;f=fopen("plus.in","r");g=fopen("plus.out","w");
fscanf(f,"%lld",&s);
fscanf(f,"%lld%lld%lld",&a,&b,&c);
fscanf(f,"%lld%lld%lld",&u,&v,&w);
if(u==-1){s+=a;u=1;}
if(v==-1){s+=b;v=1;}
if(w==-1){s+=c;w=1;}
if(u+v+w==3)
{solve3();fprintf(g,"%lld\n",sol);fcloseall();return 0;}
if(u+v+w==2)
{if(!u){aux=a;a=c;c=aux;u=1;w=0;}
if(!v){aux=b;b=c;c=aux;v=1;w=0;}
solve2();fprintf(g,"%lld\n",sol);fcloseall();return 0;
}
if(u+v+w==1)
{if(v){aux=a;a=b;b=aux;u=1;v=0;}
if(w){aux=a;a=c;c=aux;u=1;v=0;}
solve1();fprintf(g,"%lld\n",sol);fcloseall();return 0;
}
solve0();fprintf(g,"%lld\n",sol);fcloseall();return 0;
}
void solve0()
{
if(s==0) sol=(a+1)*(b+1)*(c+1);
}
void solve1()
{
if(s<=a) sol=(b+1)*(c+1);
}
void solve2()
{ if(s>a+b){sol=0;return;}
cc[a+b+2]++;cc[a+1]--;cc[b+1]--;cc[0]++;
for(i=a+b+2;i>=2;i--)
{ cc[i-1]+=2*cc[i];
cc[i-2]-=cc[i];
}
sol=cc[s+2]*(c+1);
}
void solve3()
{ if(s>a+b+c){sol=0;return;}
cc[a+b+c+3]++;cc[a+b+2]--;cc[a+c+2]--;cc[b+c+2]--;
cc[a+1]++;cc[b+1]++;cc[c+1]++;cc[0]--;
for(i=a+b+c+3;i>=3;i--)
{ cc[i-1]+=3*cc[i];cc[i-2]-=3*cc[i];cc[i-3]+=cc[i];}
sol=cc[s+3];
}