Cod sursa(job #1901364)

Utilizator trutruvasilicaHuhurez Marius trutruvasilica Data 3 martie 2017 21:36:45
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <cstdlib>
#include <cmath>
#include <cstring>
#define A(i) (((i)<0)?(An[-(i)]):(Ap[(i)]))
#define B(i) (((i)<0)?(Bn[-(i)]):(Bp[(i)]))
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int cost[1001];
int Ap[60000],An[60000],Bp[60000],Bn[60000];
const int mod=10000;
int main()
{
    int n,m,x,i,j;
    fin>>n>>m>>x;
    A(0)=1;
    for(i=1;i<=n;i++)
    {
        for(int s=1;s<=m;s++)
        {
            memcpy(Bn,An,sizeof(An));
            memcpy(Bp,Ap,sizeof(Ap));
            for(j=50000;j>=-50000;j--)
            {
                A(j)=(B(j)+B(j-s*i)+B(j+s*i))%mod;
            }
        }
    }
    if(abs(x)>44100) fout<<0;
    else
    {
        fout<<A(x);
    }
}