Pagini recente » Cod sursa (job #633960) | Cod sursa (job #1008211) | Cod sursa (job #683588) | Cod sursa (job #1917313) | Cod sursa (job #1499382)
#include <stdio.h>
#include <string.h>
using namespace std;
const int MAX=100000;
const int zero=45000;
const int MOD=10000;
int val1[MAX],min1,max1;
int val2[MAX],min2,max2;
int main()
{
FILE *fin,*fout;
fin=fopen("diamant.in","r");
fout=fopen("diamant.out","w");
int n,m,x;
fscanf(fin,"%d%d",&n,&m);
///
min1=min2=zero-1;
max1=max2=zero+1;
val1[0+zero]++;
///
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
{
for(int k=min1; k<=max1; k++)
if(val1[k]!=0)
{
val2[k]=(val2[k]+val1[k])%MOD;
val2[k+i*j]=(val2[k+i*j]+val1[k])%MOD;
val2[k-i*j]=(val2[k-i*j]+val1[k])%MOD;
if(k+i*j>max1 && k+i*j>max2)
max2=k+i*j;
if(k-i*j<min1 && k-i*j<min2)
min2=k-i*j;
}
min1=min2;
max1=max2;
min2=max2=0;
for(int k=min1; k<=max1; k++)
{
val1[k]=val2[k];
val2[k]=0;
}
}
fscanf(fin,"%d",&x);
if(x!=0 && x<=45000)
fprintf(fout,"%d",val1[x+zero]);
else if (x==0)
fprintf(fout,"%d",val1[x+zero]);
else
fprintf(fout,"0");
return 0;
}