#include <iostream>
#include <string>
#include <cstdio>
#include <string.h>
#include <ctype.h>
using namespace std;
#define MAXN 20 + 5
string excuses[MAXN], keywords[MAXN];
string excusess[MAXN];
int n, m;
int num[MAXN];
char change(char ch)
{
if (ch >= 'A' && ch <= 'Z')
{
ch += 32;
}
return ch;
}
void solve()
{
int mx = -1;
for (int i = 0; i < m; i++)
{
string str = "";
int countn = 0;
for (int j = 0; j < excuses[i].length(); j++)
{
if (isalpha(excusess[i][j]))
{
str += excusess[i][j];
}
else
{
for (int k = 0; k < n; k++)
{
if (str == keywords[k])
{
countn++;
}
}
str = "";
}
}
mx = max(mx, countn);
num[i] = countn;
}
for (int i = 0; i < m; i++)
{
if (num[i] == mx)
{
cout << excuses[i] << endl;
}
}
cout << endl;
}
void input()
{
int k = 0;
while (scanf("%d %d", &n, &m) != EOF)
{
getchar();
for (int i = 0; i < n; i++)
{
getline(cin, keywords[i]);
}
for (int i = 0; i < m; i++)
{
getline(cin, excuses[i]);
excusess[i] = excuses[i];
}
for (int i = 0; i < n; i++)
{
int len = keywords[i].length();
for (int j = 0; j < len; j++)
{
keywords[i][j] = change(keywords[i][j]);
}
}
for (int i = 0; i < m; i++)
{
int len = excuses[i].length();
for (int j = 0; j < len; j++)
{
excusess[i][j] = change(excuses[i][j]);
}
}
memset(num, 0, sizeof(num));
cout << "Excuse Set #" << ++k << endl;
solve();
}
}
int main()
{
input();
return 0;
}
ACM->uva409
最新推荐文章于 2017-01-07 09:21:35 发布