Pagini recente » Cod sursa (job #2373301) | Cod sursa (job #2728795) | Cod sursa (job #2123194) | Cod sursa (job #1450659) | Cod sursa (job #1499350)
#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;
max1=max2=zero;
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)
max2=k+i*j;
if(k-i*j<min1)
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)
fprintf(fout,"%d",val1[x+zero]);
else if (x<=44000)
fprintf(fout,"%d",val1[x+zero]-1);
else
fprintf(fout,"0");
return 0;
}