Pagini recente » Monitorul de evaluare | Cod sursa (job #3152548) | Cod sursa (job #1087921) | Cod sursa (job #3039659) | Cod sursa (job #1202561)
#include <unordered_set>
#include <fstream>
#define INFILE "dtcsu.in"
#define OUTFILE "dtcsu.out"
using std::unordered_set;
using std::ifstream;
using std::ofstream;
inline long long strip_binary_zeros(long long l)
{
if (l && !(l&1))
return l / (l & -l);
return l;
}
long long parse_long_long(const char* input)
{
long long ret = 0;
char i;
while (i = *(input++)) {
if (isdigit(i))
ret = ret * 10 + (i - '0');
}
return ret;
}
long long parse_long_long_strip_decimal_zeros(const char* input)
{
long long ret = 0;
char i;
long long carry = 10;
while (i = *(input++)) {
if (isdigit(i))
if (i != '0'){
ret = ret * carry + i - '0';
carry = 10;
}
else
carry *= 10;
}
return ret;
}
int main()
{
unordered_set<long long> table;
ifstream fin(INFILE);
long long Q, N;
char buffer[30];
for (auto i = 0; i < 276997; ++i) {
fin.getline(buffer, 30);
N = parse_long_long_strip_decimal_zeros(buffer);
if (N & 1)
table.insert(N);
}
fin.getline(buffer, 30);
Q = parse_long_long(buffer);
long long res = 0;
auto endIterator = table.end();
for (auto i = 0; i < Q; ++i) {
fin.getline(buffer, 30);
N = parse_long_long_strip_decimal_zeros(buffer);
res += (table.find(strip_binary_zeros(N)) != endIterator) ? 1 : 0;
}
fin.close();
ofstream fout(OUTFILE);
fout << res;
fout.close();
}