Pagini recente » Rating petrscu remus (skynetsniper) | Cod sursa (job #1572687) | Rating andra andra (andra504) | Cod sursa (job #1119792) | Cod sursa (job #1692087)
#include <fstream>
#include <vector>
using namespace std;
ofstream out("dtcsu.out");
class input_reader {
private:
FILE *input_file;
static const int SIZE = 150000;
char buffer[SIZE]; int cursor;
inline void advance() {
if( ++cursor == SIZE ) {
cursor = 0;
fread( buffer, SIZE, 1, input_file );
}
return;
}
inline char current() {
return buffer[cursor];
}
public:
input_reader( const char *file_name, const char *file_type ) {
input_file = fopen( file_name, file_type ); cursor = 0;
fread( buffer, SIZE, 1, input_file );
}
template <class type>
input_reader &operator >>( type &value ) {
value = 0;
while( current() < '0' || current() > '9' )
advance();
while( current() >= '0' && current() <= '9' ) {
value = value * 10 + ( current() - '0' );
advance();
}
return *this;
}
} in( "dtcsu.in", "r" );
typedef long long I64;
const int NMAX = 276997;
const int MOD = 9013;
vector <I64> H[MOD+1];
void Push_hash( I64 nr ) {
int key = nr % MOD;
H[key].push_back( nr );
}
bool Check_hash( I64 nr ) {
int key = nr % MOD;
for( int i = 0; i < (int)H[key].size(); ++i ) {
if( H[key][i] == nr ) return 1;
}
return 0;
}
int main() {
for( int i = 1; i <= NMAX; ++i ) {
I64 nr; in>> nr;
if(nr&1) Push_hash( nr );
}
int Q, Ans = 0;
in >> Q;
for( int i = 1; i <= Q; ++i ) {
I64 nr; in >> nr;
while(!(nr&1)) nr>>=1;
Ans += Check_hash( nr );
}
out << Ans << '\n';
return 0;
}