Cod sursa(job #420466)

Utilizator vladiiIonescu Vlad vladii Data 19 martie 2010 12:32:12
Problema Diamant Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
using namespace std;
#define MOD 10000

int N, M, X;
int A[45000], B[45000];

int main() {
    FILE *f1=fopen("diamant.in", "r"), *f2=fopen("diamant.out", "w");
    int i, j, p, q, Smax=0;
    fscanf(f1, "%d%d%d", &N, &M, &X);
    for(i=1; i<=N; i++) {
         for(j=1; j<=M; j++) {
              Smax+=i*j;
         }
    }
    if(X>Smax || X<-Smax) {
         fprintf(f2, "0\n");
    }
    else {
         B[Smax]=1;
         for(i=1; i<=N; i++) {
              for(j=1; j<=M; j++) {
                   for(p=-Smax; p<=Smax; p++) {
                        A[Smax+p]=(B[Smax+i*j+p]+B[Smax+p]+B[Smax-i*j+p])%MOD;
                   }
                   for(p=-Smax; p<=Smax; p++) {
                        B[Smax+p]=A[Smax+p];
                   }
              }
         }
         fprintf(f2, "%d\n", B[Smax+X]);
    }
    fclose(f1); fclose(f2);
    return 0;
}