Pagini recente » Cod sursa (job #704735) | Cod sursa (job #2895899) | Cod sursa (job #2655671) | Cod sursa (job #1825444) | Cod sursa (job #2291387)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("abc2.in");
ofstream out("abc2.out");
string s, g;
int sz, dim, rs;
ll a, b, c;
unordered_map <ll, bool> mp;
int main() {
in >> s;
while (in >> g) {
dim = g.size();
a = b = c = 0;
for (int i = 0; i < dim; i++)
switch (g[i]) {
case 'a' : a |= (1 << i); break;
case 'b' : b |= (1 << i); break;
case 'c' : c |= (1 << i); break;
}
mp[(a << 40LL) | (b << 20LL) | c] = 1;
}
sz = s.size();
a = b = c = 0;
for (int i = 0; i < sz; i++) {
if (i >= dim) {
a >>= 1LL;
b >>= 1LL;
c >>= 1LL;
}
switch (s[i]) {
case 'a' : a |= (1 << min(i, dim - 1)); break;
case 'b' : b |= (1 << min(i, dim - 1)); break;
case 'c' : c |= (1 << min(i, dim - 1)); break;
}
if (mp.count((a << 40LL) | (b << 20LL) | c))
rs++;
}
out << rs;
return 0;
}