Cod sursa(job #1831839)

Utilizator MickeyTurcu Gabriel Mickey Data 18 decembrie 2016 20:48:53
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
#include<string.h>
#include<ctype.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<unordered_map>
#include<array>
#include<functional>
#include<deque>
#include<math.h>
#include<unordered_set>
#include<queue>
#include<list>
#include<set>
#include<iomanip>
#include<bitset>
using namespace std;
int i, j, n, m, k, el,len,p3[23],nr,rez,lun;
char text[1000100],cuv[25];
map<int, int>mp;
int main()
{
	//ifstream f("file.in");
	//ofstream g("file.out");
	ifstream f("abc2.in");
	ofstream g("abc2.out");
	f >> text;
	p3[0] = 1;
	for (i = 1; i <= 22; i++)
		p3[i] = p3[i - 1] * 3;
	while (f >> cuv)
	{
		if(len==0)
			len = strlen(cuv);
		nr = 0;
		for (i = 0; i <= len - 1; i++)
			nr += p3[len - 1 - i] * (cuv[i] - 'a');
		mp[nr]++;
	}
	nr = 0;
	for(i=0;i<=len-1;i++)
		nr += p3[len - 1 - i] * (text[i] - 'a');
	if (mp.find(nr) != mp.end())
		rez++;
	lun = strlen(text);
	for (; i <= lun - 1; i++)
	{
		nr -= p3[len - 1] * (text[i-len] - 'a');
		nr = nr * 3;
		nr += (text[i] - 'a');
		if(mp.find(nr)!=mp.end())
			rez ++;
	}
	g << rez;
	return 0;
}