Pagini recente » Cod sursa (job #327683) | Cod sursa (job #2095537) | Cod sursa (job #99199) | Cod sursa (job #1349328) | Cod sursa (job #2288612)
#pragma GCC optmize("03")
#include <bits/stdc++.h>
using namespace std;
ifstream in("abc2.in");
ofstream out("abc2.out");
string s, g;
vector <unordered_set> v[1 << 20];
bool get(int x, pair <int, int> y) {
return v[x].find(y) != v[x].end();
}
int main() {
in >> s;
while (in >> g) {
int sz = g.size();
int mask1 = 0, mask2 = 0, mask3 = 0;
for (int j = 0; j < sz; j++)
switch (g[j]) {
case 'a' :
mask1 |= (1 << j);
break;
case 'b' :
mask2 |= (1 << j);
break;
case 'c' :
mask3 |= (1 << j);
break;
}
v[mask1].insert({mask2, mask3});
}
int sz = s.size(), rs = 0;
for (int i = 0; i < sz; i++) {
int mask1 = 0, mask2 = 0, mask3 = 0;
for (int j = i; j < min(sz, i + 20); j++) {
switch (s[j]) {
case 'a' :
mask1 |= (1 << (j - i));
break;
case 'b' :
mask2 |= (1 << (j - i));
break;
case 'c' :
mask3 |= (1 << (j - i));
break;
}
if (get(mask1, {mask2, mask3})) {
rs++;
break;
}
}
}
out << rs;
return 0;
}