Cod sursa(job #1989692)

Utilizator dragos231456Neghina Dragos dragos231456 Data 8 iunie 2017 16:13:16
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#define mod 10000
using namespace std;
ifstream f("diamant.in");
ofstream g("diamant.out");
int n,m,x,w[405],k,val;
int v[400005],last[400005];
#define v (v+200000)
#define last (last+200000)
void influenta(int n,int m)
{
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
        {
            ++k;
            w[k]=i*j;
        }
    }
}

int main()
{
    f>>n>>m>>x;
    influenta(n,m);
    for(int j=1;j<=k;++j)
    {
        val=w[j];
        for(int i=200000;i>=-200000;--i)
        {
            if(last[i]!=0)
            {
                v[i+val]=(last[i+val]+last[i])%mod;
                v[i-val]=(last[i-val]+last[i])%mod;
            }
        }
        v[val]++;
        v[-val]++;
        v[val]%=mod; v[-val]%=mod;
        for(int i=-200000;i<=200000;++i)
        {
            last[i]=v[i];
        }
    }
    if(x>200000) g<<'0';
    else g<<v[x];
    return 0;
}