Cod sursa(job #1966226)

Utilizator bt.panteaPantea Beniamin bt.pantea Data 15 aprilie 2017 00:09:58
Problema Diamant Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define NMAX 25
#define XMAX 50000
#define a(x) (((x) < 0) ? an[(-x)] : ap[(x)] )
#define b(x) (((x) < 0) ? bn[(-x)] : bp[(x)] )
using namespace std;
ifstream f ("diamant.in");
ofstream g ("diamant.out");
const int MOD = 10000, ls = -45000, ld = 45000;
int n, m, x, ap[2 * XMAX], an[2 * XMAX], bp[2 * XMAX], bn[2 * XMAX];
int main()
{
    f>>n>>m>>x;
    ap[0] = 1;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++) {
            memcpy(bp, ap, sizeof(bp));
            memcpy(bn, an, sizeof(bn));
            for (int q = ls; q <= ld; q++) {
                a(q) = b(q - i * j) + b(q) + b(q + i * j);
                a(q) %= MOD;
            }
        }
    if (x > ld || x < ls) {
        g<<0;
        return 0;
    }
    else g<<a(x);
    return 0;
}