Pagini recente » Cod sursa (job #1884416) | Cod sursa (job #8404) | Cod sursa (job #2390965) | Cod sursa (job #995759) | Cod sursa (job #918166)
Cod sursa(job #918166)
#include <fstream>
#include <vector>
#define MAXX 44105
#define NRM 10000
using namespace std;
ifstream f("diamant.in");
ofstream g("diamant.out");
int n,m,x,uz[2][2*MAXX],uzv[2*MAXX],p,sz;
bool act=0;
vector<int> v;
int main()
{
int i,j,k;
f>>n>>m>>x;
x+=MAXX;
v.push_back(MAXX);
uzv[MAXX]=1;
uz[1][MAXX]++;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
for(k=0;k<v.size();k++)
uz[act][v[k]]=uz[1-act][v[k]];
p=i*j;
sz=v.size();
for(k=0;k<sz;k++){
uz[act][v[k]+p]+=uz[1-act][v[k]];
uz[act][v[k]-p]+=uz[1-act][v[k]];
if(!uzv[v[k]+p]){
uzv[v[k]+p]=1;
v.push_back(v[k]+p);}
if(!uzv[v[k]-p]){
uzv[v[k]-p]=1;
v.push_back(v[k]-p);}}
for(k=0;k<v.size();k++)
uz[act][v[k]]%=NRM;
act=1-act;}
if(x>=2*MAXX||x<0){
g<<"0\n";
return 0;}
g<<uz[1-act][x]<<'\n';
return 0;
}