Cod sursa(job #2291387)

Utilizator flibiaVisanu Cristian flibia Data 27 noiembrie 2018 22:13:35
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#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;
}