Cod sursa(job #1046474)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 2 decembrie 2013 22:37:32
Problema Dtcsu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <unordered_set>

using namespace std;

unordered_set < long long > S;

#define BUF_SIZE 4096
char buf[BUF_SIZE];
int pos = BUF_SIZE;

inline char getChar() {
  if (pos == BUF_SIZE) {
    fread(buf, 1, BUF_SIZE, stdin);
    pos = 0;
  }
  return buf[pos++];
}

inline long long readInt() {
  long long result = 0;
  char c;
  do {
    c = getChar();
  } while (!isdigit(c));

  do {
    result = 10LL * result + c - '0';
    c = getChar();
  } while (isdigit(c));

  return result;
}

int main()
{
    freopen("dtcsu.in", "r", stdin);
    freopen("dtcsu.out", "w", stdout);

    for ( int i = 1; i <= 276997; ++i )
    {
        long long nr = 0;

        scanf("%lld", &nr);

        nr /= ( nr & ( -nr ) );

        S.insert( nr );
    }



    long long N, numb;
    int number = 0;

    N = readInt();

    for ( long long i = 1; i <= N; ++i )
    {
        numb = readInt();

        if ( numb )
        {
            numb /= ( numb & ( -numb ) );

            number += S.count( numb );
        }
    }

    printf("%d\n", number);

    return 0;
}