Cod sursa(job #2071947)

Utilizator giotoPopescu Ioan gioto Data 21 noiembrie 2017 10:43:08
Problema Diamant Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;

int n, m, x;
const int VMAX = 44100 * 2;
const int MOD = 10000;
int d[VMAX + 5], c[VMAX + 5];
int main(){
    freopen("diamant.in", "r", stdin);
    freopen("diamant.out", "w", stdout);
    scanf("%d%d%d", &n, &m, &x);
    d[44100] = 1;
    for(int i = 1; i <= n ; ++i){
        for(int j = 1; j <= m ; ++j){
            memcpy(c, d, sizeof(d));
            for(int t = VMAX; t >= i * j ; --t){
                d[t] = d[t] + d[t - i * j];
                if(d[t] >= MOD) d[t] -= MOD;
            }
            for(int t = 0; t <= VMAX - i * j; ++t){
                d[t] = c[t + i * j] + d[t];
                if(d[t] >= MOD) d[t] -= MOD;
            }
        }
    }
    if(x <= 44100 && x >= -44100) printf("%d", d[x + 44100]);
    else printf("0");
    return 0;
}