Cod sursa(job #1290080)

Utilizator hrazvanHarsan Razvan hrazvan Data 10 decembrie 2014 20:05:36
Problema Diamant Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
#define MAXX 44100
#define MAX 88201
#define MOD 10000
int d[2][MAX];

int main(){
  FILE *in = fopen("diamant.in", "r");
  int n, m, x;
  fscanf(in, "%d%d%d", &n, &m, &x);
  fclose(in);
  int i, j, k, q;
  d[0][MAXX] = 1;
  for(i = 1; i <= n; i++){
    for(j = 1; j <= m; j++){
      q++;
      q &= 1;
      for(k = 0; k <= MAX; k++){
        d[q][k] = d[!q][k];
        if(k - i * j >= 0)
          d[q][k] += d[!q][k - i * j];
        if(k + i * j < MAX)
          d[q][k] += d[!q][k + i * j];
        d[q][k] %= MOD;
      }
    }
  }
  FILE *out = fopen("diamant.out", "w");
  if(x + MAXX >= 0 && x + MAXX < MAX)
    fprintf(out, "%d", d[(n * m) & 1][x + MAXX]);
  else
    fprintf(out, "0");
  fclose(out);
  return 0;
}