Cod sursa(job #956294)

Utilizator classiusCobuz Andrei classius Data 2 iunie 2013 18:58:06
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <vector>
#include <cmath>

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

const int mod=10000;

int main()
{
    int n,m,x;

    f>>n>>m>>x;

    vector<int> v;
    int s=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            s+=i*j;
            v.push_back(i*j);
        }

    if(abs(x)>s){
        g<<0;
        return 0;
    }

    vector<int> u(s+1,0);
    u[0]=1;

    for(size_t i=0;i<v.size();i++){
        for(int j=s;j>=0;j--){
            if(u[j]){
                u[j+v[i]]+=u[j];
                u[j+v[i]]%=mod;
                if(j-v[i]>=0){
                    u[j-v[i]]+=u[j];
                    u[j-v[i]]%=mod;
                }
            }
        }
    }

    g<<u[abs(x)];

    return 0;
}