Cod sursa(job #1478757)

Utilizator hrazvanHarsan Razvan hrazvan Data 29 august 2015 14:29:15
Problema Dtcsu Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <stdio.h>
#define NR 276997
#define MOD 600011
#define HASH1 7654337
#define HASH2 8765437
#define HASH3 9876553
#define HASH4 10864537
#define HASH5 65876351
char v[MOD];

inline void set(int poz){
  v[poz / 8] += (1 << (poz % 8));
}

inline char este(int poz){
  return (v[poz / 8] >> (poz % 8)) & 1;
}

int main(){
  FILE *in = fopen("dtcsu.in", "r");
  int i;
  long long x;
  for(i = 0; i < NR; i++){
    fscanf(in, "%lld", &x);
    x = x % (8 * MOD) * 6000023 % (8 * MOD);
    set(x * HASH1 % (8 * MOD));
    set(x * HASH2 % (8 * MOD));
    set(x * HASH3 % (8 * MOD));
    set(x * HASH4 % (8 * MOD));
    set(x * HASH5 % (8 * MOD));
  }
  int q, rez = 0;
  fscanf(in, "%d", &q);
  for(i = 0; i < q; i++){
    fscanf(in, "%lld", &x);
    x = x % (8 * MOD) * 6000023 % (8 * MOD);
    if(este(x * HASH1 % (8 * MOD)) && este(x * HASH2 % (8 * MOD)) &&
       este(x * HASH3 % (8 * MOD)) && este(x * HASH4 % (8 * MOD)) && este(x * HASH5 % (8 * MOD)))
     rez++;
  }
  FILE *out = fopen("dtcsu.out", "w");
  fprintf(out, "%d", rez);
  fclose(out);
  return 0;
}