Pagini recente » Cod sursa (job #1071293) | Cod sursa (job #1474202) | Cod sursa (job #600141) | Cod sursa (job #30219) | Cod sursa (job #923803)
Cod sursa(job #923803)
#include<stdio.h>
#include<algorithm>
FILE *in,*out;
using namespace std;
int X,M,N,rasp[2][90000],v[401],i,j;
int main()
{
in=fopen("diamant.in","rt");
out=fopen("diamant.out","wt");
fscanf(in,"%d%d%d",&N,&M,&X);
if((X<-N*M*(M+1)*(N+1)/4)||(X>N*M*(M+1)*(N+1)/4))
{
fprintf(out,"0");
fclose(in);
fclose(out);
return 0;
}
for(i=1;i<=M*N;++i)
{
v[i]=v[i-1]+2*((i-1)/M +1)*((i-1)%M+1);
}
X=X+N*M*(M+1)*(N+1)/4;
rasp[0][0]=1;
rasp[0][1]=1;
rasp[0][2]=1;
for( i=2;i<=N*M;++i)
{
for( j=0;j<=min(v[i],X);++j)
{
rasp[1][j]=rasp[0][j];
if(j>=((i-1)/M +1)*((i-1)%M+1))
rasp[1][j]=(rasp[1][j]+rasp[0][j-((i-1)/M +1)*((i-1)%M+1)])%10000;
if(j>=2*((i-1)/M +1)*((i-1)%M+1))
rasp[1][j]=(rasp[1][j]+rasp[0][j-2*((i-1)/M +1)*((i-1)%M+1)])%10000;
}
for(j=0;j<=min(v[i],X);++j)
{
rasp[0][j]=rasp[1][j];
}
}
fprintf(out,"%d",rasp[0][X]);
fclose(in);
fclose(out);
return 0;
}