Pagini recente » Cod sursa (job #1703105) | Cod sursa (job #951394) | Cod sursa (job #1357118) | Cod sursa (job #1391529) | Cod sursa (job #2288608)
#pragma GCC optmize("03")
#include <bits/stdc++.h>
using namespace std;
ifstream in("abc2.in");
ofstream out("abc2.out");
string s, g;
vector <pair <int, int> > v[1 << 20];
bool find(int x, pair <int, int> y) {
for (auto i : v[x])
if (i == y)
return 1;
return 0;
}
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].push_back({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 (find(mask1, {mask2, mask3})) {
rs++;
break;
}
}
}
out << rs;
return 0;
}