Pagini recente » Cod sursa (job #2769698) | Cod sursa (job #955666) | Cod sursa (job #1048009) | Cod sursa (job #1476533) | Cod sursa (job #847772)
Cod sursa(job #847772)
#include<iostream>
#include<fstream>
using namespace std;
#define NMAX 21
#define SMAX NMAX*NMAX*(NMAX-1)*(NMAX-1)/4
#define MOD 10000
int s[2*(SMAX+1)],d[2*(SMAX+1)],smax;
#define s (s + SMAX)
#define d (d + SMAX)
int dp(int n, int m, int sum)
{
int i,j,k,x;
s[0]=1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++) {
x=i*j;
for(k=smax-x;k>=-smax;k--)
if(s[k])
d[k+x]=s[k];
for(k=-smax+x;k<=smax;k++)
if(s[k])
d[k-x]=d[k-x]+s[k];
for(k=-smax;k<=smax;k++)
s[k]=(s[k]+d[k])%MOD;
}
return s[sum];
}
int main ()
{
int n,m,sum;
ifstream f("diamant.in");
ofstream g("diamant.out");
f>>n>>m>>sum;
f.close();
smax=n*m*(n+1)*(m+1)/4;
if(sum>smax)
g<<"0";
else g<<dp(n,m,sum);
g.close();
return 0;
}