Pagini recente » Cod sursa (job #930217) | Cod sursa (job #1549464) | Cod sursa (job #2076539) | Cod sursa (job #726005) | Cod sursa (job #799731)
Cod sursa(job #799731)
#include<stdio.h>
#define MAX 21*21*100+1
int q[2*MAX],p[2*MAX],m,n,val,f,l,priv[2*MAX];
#define q (q + MAX)
#define p (p + MAX)
#define priv (priv + MAX)
FILE *fin,*fout;
void citire()
{
fin=fopen("diamant.in","r");
fscanf(fin,"%d %d %d",&m,&n,&val);
fclose(fin);
f=-m*(m+1)*n*(n+1)/4;
l=-f;
}
void prelucrare()
{
q[0]=1;
int nr=0,x;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
nr++;
x=i*j;
for(int k=f;k<=l;k++)
{
if(q[k]!=0)
{
priv[k-x]=q[k-x];
q[k-x]=(q[k-x]+q[k])%10000;
p[k-x]=nr;
}
}
for(int k=l;k>=f;k--)
{
if(q[k]!=0)
{
if(p[k]!=nr)
{
q[k+x]=(q[k+x]+q[k])%10000;
}
else
{
q[k+x]=(q[k+x]+priv[k])%10000;
}
p[k+x]=nr;
}
}
}
}
}
void afisare()
{
fout=fopen("diamant.out","w");
fprintf(fout,"%d",q[val]);
}
int main()
{
citire();
prelucrare();
afisare();
return 0;
}