Cod sursa(job #1878328)

Utilizator pas.andreiPopovici Andrei-Sorin pas.andrei Data 14 februarie 2017 00:44:20
Problema Diamant Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
#define pb push_back
#define MOD 10000
#define pb push_back
#define INF 0x3f3f3f3f
#define INFLL (1LL*INF*INF)
#define NMAX 44105
#define SHIFT 450
#define ll long long

using namespace std;

typedef pair<int, int> pii;

ifstream fin("diamant.in");
ofstream fout("diamant.out");

int nr[3*NMAX],pre[3*NMAX];
vector<int> v;

int main() {
	int n,m,k,i,j;

	fin>>n>>m>>k;
	if(abs(k)>44100) {
		fout<<0;
		return 0;
	}
	for(i=1;i<=n;++i)
		for(j=1;j<=m;++j) v.pb(i*j);

	pre[SHIFT]=1;
	nr[SHIFT]=1;
	for(auto it:v) {
		for(j=NMAX+SHIFT-1;j>=it;--j) nr[j]=(nr[j]+pre[j-it])%MOD;
		for(j=0;j<SHIFT+NMAX-it;++j)  nr[j]=(nr[j]+pre[j+it])%MOD;

		for(j=0;j<NMAX+SHIFT;++j) pre[j]=nr[j];
	}

	fout<<nr[SHIFT+k];

	return 0;
}