Cod sursa(job #784098)

Utilizator marinMari n marin Data 4 septembrie 2012 22:13:51
Problema Diamant Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <string.h>
#define MOD 10000

#define DIM 21*21*21*21
using namespace std;

int V[DIM];
int W[DIM];

int *P = V + (DIM/2);
int *Q = W + (DIM/2);

int N, M, i, j, k, t, v, minim, maxim, X;

int main() {
	ifstream f("diamant.in");
	ofstream g("diamant.out");
	f>>N>>M>>X;
	P[0] = 1;
	for (i=1;i<=N;i++)
		for (j=1;j<=M;j++){
			for (t=minim;t<=maxim;t++)
				if (P[t]) {
					v = i*j;
					Q[t]+=P[t];
					Q[t+v]+=P[t];
					Q[t-v]+=P[t];
					//if (Q[t] >= 2000000000)
						Q[t] %= MOD;
					//if (Q[t+v] >= 2000000000)
						Q[t+v] %= MOD;
					//if (Q[t-v] >= 2000000000)
						Q[t-v] %= MOD;
					if (t+v > maxim)
						maxim = t+v;
					if (t-v < minim)
						minim = t-v;
				}
			for (t=minim;t<=maxim;t++) {
				P[t] = Q[t];
				Q[t] = 0;
			}
		}
	if (X > DIM/2 || X < -DIM/2)
		g<<0;
	else
		g<<P[X];
	return 0;
}