mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
94 lines
2.1 KiB
C++
94 lines
2.1 KiB
C++
|
#include <iostream>
|
||
|
#include <cstdio>
|
||
|
#include <cstring>
|
||
|
#include <algorithm>
|
||
|
using namespace std;
|
||
|
int n, m;
|
||
|
string A[1050], B[1050];
|
||
|
struct pos
|
||
|
{
|
||
|
int L, R;
|
||
|
} p[10050];
|
||
|
bool cmp(pos A, pos B)
|
||
|
{
|
||
|
if (A.L != B.L)
|
||
|
{
|
||
|
return A.L < B.L;
|
||
|
}
|
||
|
return A.R < B.R;
|
||
|
}
|
||
|
void solve()
|
||
|
{
|
||
|
int cnt = 0;
|
||
|
for (int i = 1; i <= m; i++)
|
||
|
{
|
||
|
int lenB = B[i].length();
|
||
|
int q = 1;
|
||
|
for (int j = 0; j < lenB; j++)
|
||
|
{
|
||
|
for (int k = 1; k <= n; k++)
|
||
|
{
|
||
|
int lenA = A[k].length();
|
||
|
if (j+lenA-1 >= lenB) continue;
|
||
|
if (A[k][0] == B[i][j] && A[k][lenA-1] == B[i][j+lenA-1])
|
||
|
{
|
||
|
bool ok = true;
|
||
|
for (int l = 0; l < lenA; l++)
|
||
|
{
|
||
|
if (A[k][l] != B[i][j+l])
|
||
|
{
|
||
|
ok = false;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
if (ok)
|
||
|
{
|
||
|
p[q].L = j;
|
||
|
p[q++].R = j+lenA-1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
p[0].L = p[0].R = -100;
|
||
|
sort(p+1, p+q, cmp);
|
||
|
for (int i = q-1; i >= 1; i--)
|
||
|
{
|
||
|
if (p[i].L > p[i-1].R)
|
||
|
{
|
||
|
cnt++;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
for (int j = i-1; j >= 1; j--)
|
||
|
{
|
||
|
if (p[i].L <= p[j].R) ;
|
||
|
else
|
||
|
{
|
||
|
i = j+1;
|
||
|
cnt++;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
cout << cnt << endl;
|
||
|
}
|
||
|
int main()
|
||
|
{
|
||
|
while (cin >> n >> m && (n && m))
|
||
|
{
|
||
|
for (int i = 1; i <= n; i++)
|
||
|
{
|
||
|
cin >> A[i];
|
||
|
}
|
||
|
getchar();
|
||
|
for (int i = 1; i <= m; i++)
|
||
|
{
|
||
|
getline(cin, B[i]);
|
||
|
}
|
||
|
solve();
|
||
|
}
|
||
|
return 0;
|
||
|
}
|