Cod sursa(job #1145734)

Utilizator alexandru70Ungurianu Alexandru alexandru70 Data 18 martie 2014 13:33:10
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <cstdio>
#include <string>
#include <cctype>
#include <unordered_set>
using namespace std;

ofstream out ("dtcsu.out");

unordered_set<unsigned> nums;

class Reader {
public:
	Reader(string fileName) {
		input = fopen(fileName.c_str(),"r");
	}

	unsigned getUnsigned() {
		if(pos >= bufferSize) {
			renewBuffer();
		}
		unsigned nr = 0;
		while(!isdigit(buffer[pos])) {
			pos++;
			if(pos >= bufferSize)renewBuffer();
		}
		while(isdigit(buffer[pos])){
			nr = nr*10 + buffer[pos]-'0';
			pos++;
			if(pos >= bufferSize)renewBuffer();
		}
		return nr;
	}
private:
	void renewBuffer() {
		pos = 0;
		fread(buffer,1,bufferSize,input);
	}

	const static size_t bufferSize = 102400;
	size_t pos = bufferSize;
	FILE* input;
	char buffer[bufferSize];
};


int main() {
	Reader input("dtcsu.in");

	for(size_t i = 0; i < 276997; ++i) {
		unsigned nr = input.getUnsigned();
		nums.insert(nr);
	}

	size_t n = input.getUnsigned();
	unsigned cnt = 0;
	for(size_t i = 0; i < n; ++i) {
		unsigned nr = input.getUnsigned();
		if(nums.find(nr) != nums.end()){
			cnt++;
		}
	}

	out << cnt << '\n';
}