Cod sursa(job #1989704)

Utilizator dragos231456Neghina Dragos dragos231456 Data 8 iunie 2017 16:32:14
Problema Diamant Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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];
                v[i-val]+=last[i];
                v[i]+=last[i];
            }
        }


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