Pagini recente » Cod sursa (job #2918857) | Cod sursa (job #61894) | Cod sursa (job #1835383) | Cod sursa (job #220263) | Cod sursa (job #873035)
Cod sursa(job #873035)
#include <fstream>
#include <queue>
#include <cstdlib>
#define maxn 100020
#define mij 50000
#define mod 10000
int vec[maxn],aux[maxn];
using namespace std;
ifstream in("diamant.in");
ofstream out("diamant.out");
queue<int> q;
int sol;
int n,m,s,maxval,maxi,mini,minval,sol2;
void read()
{
in>>n>>m>>s;
if(s>50000){out<<"0";exit(0);}
vec[mij]=1;
int maxi=0,mini=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
for(int t=mini;t<=maxi;t++)
{
if(vec[mij+t]==0) continue;
int x=t+i*j;
int y=t;
int z=t-i*j;
if(vec[mij+t]>=mod) vec[mij+t]-=mod;
if(aux[mij+x]>=mod) aux[mij+x]-=mod;
if(aux[mij+y]>=mod) aux[mij+y]-=mod;
if(aux[mij+z]>=mod) aux[mij+z]-=mod;
aux[mij+x]=aux[mij+x]+vec[mij+t];
aux[mij+y]=aux[mij+y]+vec[mij+t];
aux[mij+z]=aux[mij+z]+vec[mij+t];
if(aux[mij+x]>=mod) aux[mij+x]-=mod;
if(aux[mij+y]>=mod) aux[mij+y]-=mod;
if(aux[mij+z]>=mod) aux[mij+z]-=mod;
}
for(int p=0;p<=mij+maxi;p++) vec[p]=aux[p],aux[p]=0;
mini-=i*j,maxi+=i*j;
}
}
int main()
{
read();
out<<vec[s+mij];
return 0;
}