Cod sursa(job #1452437)

Utilizator hrazvanHarsan Razvan hrazvan Data 20 iunie 2015 20:41:26
Problema 1-sir Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#define MAXN 256
#define MAXS 32896
#define MOD 194767
int d[2][MAXS + 1];

inline int as(int x){
  return x < 0 ? -x : x;
}

int main(){
  FILE *in = fopen("1-sir.in", "r");
  int n, s;
  fscanf(in, "%d%d", &n, &s);
  fclose(in);
  FILE *out = fopen("1-sir.out", "w");
  if(as(s) <= n * (n - 1) / 2){
    int i, j, lin;
    d[1][1] = 1;
    for(i = 2; i < n; i++){
      lin = i & 1;
      for(j = i * (i + 1) / 2; j >= 0; j--){
        d[lin][j] = 0;
        if(j + i + 1 <= MAXS)
          d[lin][j] += d[!lin][j + i];
        d[lin][j] += d[!lin][as(j - i)];
        if(d[lin][j] >= MOD)
          d[lin][j] -= MOD;
      }
    }
    fprintf(out, "%d", d[(n - 1) & 1][s]);
  }
  else
    fprintf(out, "0");
  fclose(out);
  return 0;
}