Pagini recente » Cod sursa (job #1762863) | Cod sursa (job #130852) | Cod sursa (job #2442389) | ONIS 2014, Runda 4 | Cod sursa (job #1013095)
#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
#include <string>
#include <set>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
string sir, a;
set<unsigned int> s;
int main() {
fin >> sir;
int n;
while (fin >> a) {
unsigned int code = 0;
n = a.size();
for (int i = 0; i < a.size(); ++i)
code = code * 3 + a[i] - 'a';
s.insert(code);
}
unsigned int power = 1;
for (int i = 1; i < n; ++i)
power *= 3;
unsigned int code = 0, rez = 0;
for (int i = 0; i < n; ++i)
code = code * 3 + sir[i] - 'a';
if (s.find(code) != s.end())
++rez;
for (int i = n; i < sir.size(); ++i) {
code -= power * (sir[i - n] - 'a');
code = code * 3 + sir[i] - 'a';
if (s.find(code) != s.end())
++rez;
}
fout << rez;
return 0;
}