Cod sursa(job #554278)

Utilizator S7012MYPetru Trimbitas S7012MY Data 14 martie 2011 18:46:28
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#define DN 45005
#define MOD 10000
using namespace std;

int p[DN],q[DN];

int main()
{
    int n,m,s,smax=0;
    ifstream f("diamant.in");
    ofstream g("diamant.out");
    f>>n>>m>>s;
    for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) smax+=i*j;
    if(s>smax || s<-smax) {g<<"0"; return 0;}
    q[0]=q[1]=1;
    for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j)if(1!=i || 1!=j) {
        for(int k=0; k<=smax; ++k) p[k]=q[k];
        for(int k=0; k<=smax; ++k) {
            if(i*j<=k) q[k]=p[k]+q[k+i*j]+p[k-i*j];
            else q[k]=p[k]+q[k+i*j]+p[i*j-k];
            q[k]%=MOD;
        }
    }
    if(0<s) g<<q[s];
    else g<<q[-s];
    return 0;
}