Cod sursa(job #1973206)

Utilizator TincaMateiTinca Matei TincaMatei Data 24 aprilie 2017 19:36:22
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <cstdio>
#include <ctype.h>

const int HASH = 30103;
const int WHAT = 276997;
const int HASH2 = 1000000009;
const int BUFF = 4096;
int v[HASH][6];
int size[HASH];

FILE *fin;
int curr = BUFF - 1;
char buff[BUFF];

char getch() {
  curr++;
  if(curr == BUFF) {
    fread(buff, 1, BUFF, fin);
    curr = 0;
  }
  return buff[curr];
}

long long getnr() {
  char ch;
  ch = getch();
  while(!isdigit(ch))
    ch = getch();
  long long nr = 0LL;
  while(isdigit(ch)) {
    nr = nr * 10 + ch - '0';
    ch = getch();
  }
  return nr;
}

int main() {
  int rez, q, nr = 0;
  long long x;
  rez = 0;
  fin = fopen("dtcsu.in", "r");
  for(int i = 0; i < WHAT; ++i) {
    x = getnr();
    if(x % 2 == 1) {
      x = x % HASH2;
      v[x % HASH][size[x % HASH]] = x;
      size[x % HASH]++;
      ++nr;
    }
  }

  q = getnr();
  for(int i = 0; i < q; ++i) {
    x = getnr();
    if(x > 0) {
      x = x / (x & (-x));
      x = x % HASH2;
      int box = x % HASH;
      int j = 0;
      while(j < size[box] && v[box][j] != x)
        ++j;
      if(j < size[box])
        ++rez;
    }
  }
  fclose(fin);
  FILE *fout = fopen("dtcsu.out", "w");
  fprintf(fout, "%d", rez);
  fclose(fout);
  return 0;
}