Cod sursa(job #1142081)
| Utilizator | Data | 13 martie 2014 15:06:48 | |
|---|---|---|---|
| Problema | Diamant | Scor | 20 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <iostream>
#include <fstream>
#include <cstdlib>
#define MAXS 44100
#define MOD 10000
using namespace std;
int dp[2][MAXS+13];
int main()
{
int n,m,k;
ifstream f("diamant.in");
ofstream g("diamant.out");
f>>n>>m>>k;
if(k>MAXS || k<-MAXS){
g<<0;
return 0;
}
dp[0][0] = 1;
int now = 1 , prev = 0;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j){
for(int s=0;s<MAXS;++s)
dp[now][s]=( dp[prev][ abs(s-i*j) ] + dp[prev][s] + dp[prev][s+i*j] ) %MOD;
prev^=1;
now^=1;
}
g<<dp[prev][abs(k)];
return 0;
}
