Pagini recente » Cod sursa (job #2264431) | Cod sursa (job #2415750) | Cod sursa (job #2279139) | Cod sursa (job #2793476) | Cod sursa (job #1663092)
#include <iostream>
#include <fstream>
#include <bitset>
#include <map>
#include <cstring>
#include <string>
using namespace std;
typedef struct {
string sir;
} strng;
bitset <37> cuv[37][37][37][37];
strng penta[50001];
int sol[50001][2];
map <string, bool> harta;
map <string, bool>:: iterator it;
int cod (char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else {
return c - 'a' + 10;
}
}
int main() {
ifstream file_in ("pentagrame.in");
ofstream file_out ("pentagrame.out");
char sir[31];
char temp[6];
int i, n, m, poz, l, j, cntr = 0, maxim = 0;
file_in >> n >> m;
for (i = 0; i < n; i++) {
file_in >> temp;
harta[temp] = 0;
cuv[cod(temp[0])][cod(temp[1])][cod(temp[2])][cod(temp[3])][cod(temp[4])] = 1;
}
for (it = harta.begin(); it != harta.end(); it++) {
penta[cntr++].sir = it->first;
}
for (i = 1; i <= m; i++) {
file_in >> sir;
l = strlen(sir);
for (poz = 4; poz < l; poz++) {
for (j = 0; j < n; j++) {
cout << cod(penta[j].sir[0]) << cod(penta[j].sir[1]) << cod(penta[j].sir[2]) << cod(penta[j].sir[3]) << cod(penta[j].sir[4]) << "\n";
if (cuv[cod(sir[poz - 4])][cod(sir[poz - 3])][cod(sir[poz - 2])][cod(sir[poz - 1])][cod(sir[poz])] == 1) {
if (sol[j][1] != i) {
sol[j][0]++;
sol[j][1] = i;
}
}
}
}
}
for (i = 0; i < n; i++) {
if (sol[i][0] > maxim) {
maxim = sol[i][0];
}
}
file_out << maxim << "\n";
for (i = 0; i < n; i++) {
if (sol[i][0] == maxim) {
file_out << penta[i].sir << "\n";
}
}
return 0;
}