Cod sursa(job #1146896)

Utilizator mateidanutDanut Gabriel Matei mateidanut Data 19 martie 2014 13:28:00
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#define mod 10000
using namespace std;

int i, j, n, m, x, k, a[88203], b[88203], *p=a+44100, *q=b+44100;

ifstream f("diamant.in");
ofstream g("diamant.out");

int main()
{
    f>>n>>m>>x;
    p[0]=p[1]=p[-1]=1;
    if (x<=44100 && x>=-44100) {
        for (i=1; i<=n; ++i)
            for (j=1; j<=m; ++j) {
                if (i!=1 || j!=1) {
                    for (k=44100; k>=-44100; --k) {
                        if (i*j+k<=44100) {
                            q[k+i*j]+=p[k];
                            q[k+i*j]%=mod;
                        }
                        if (k-i*j>=-44100) {
                            q[k-i*j]+=p[k];
                            q[k-i*j]%=mod;
                        }
                    }
                    for (k=44100; k>=-44100; --k)
                        p[k]=q[k];
                }
            }
        g<<p[x];
    }
    else
        g<<0;
    return 0;
}