Cod sursa(job #1989700)

Utilizator dragos231456Neghina Dragos dragos231456 Data 8 iunie 2017 16:25:01
Problema Diamant Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <fstream>
#define mod 10000
using namespace std;
ifstream f("diamant.in");
ofstream g("diamant.out");
int n,m,x,w[4005],k,val,s;
int v[200005],last[200005];
#define v (v+100000)
#define last (last+100000)

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=-s;i<=s;++i)
        {
            if(last[i]!=0)
            {
                v[i+val]+=(last[i+val]+last[i])%mod;
                v[i-val]+=(last[i-val]+last[i])%mod;
            }
        }
        s+=val;
        v[val]=(v[val]+1)%mod;
        v[-val]=(v[-val]+1)%mod;
        for(int i=-s;i<=s;++i)
        {
            last[i]=v[i];
            v[i]=0;
        }
    }
    if(x>s) g<<'0';
    else g<<last[x];
    return 0;
}