Pagini recente » Cod sursa (job #2437785) | Cod sursa (job #2812551) | Cod sursa (job #369911) | Cod sursa (job #537188) | Cod sursa (job #2291980)
#include <fstream>
#include <string>
#include <unordered_map>
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
string s1, s2;
int N, M, i ,j, sol;
long long cod, p;
unordered_map <long long, bool> Map;
int main() {
f >> s1;
f >> s2;
N = s1.length();
M = s2.length();
cod = 0;
p = 1;
for (i = 0; i < M; ++i) {
cod = cod + (s2[i] - 'a') * p;
p = p * 3;
}
Map[cod] = true;
while (f >> s2) {
cod = 0;
p = 1;
for (i = 0; i < M; ++i) {
cod = cod + (s2[i] - 'a') * p;
p = p * 3;
}
Map[cod] = true;
}
cod = 0;
p = 1;
for (i = 0; i < M; ++i) {
cod = cod + (s1[i] - 'a') * p;
p = p * 3;
}
if (Map.find(cod) != Map.end()) ++sol;
p /= 3;
for (i = M; i < N; ++i) {
cod = (cod - s1[i - M] + 'a') / 3 + p * (s1[i] - 'a');
if ( Map.find(cod) != Map.end()) ++sol;
}
g << sol;
return 0;
}