Code: Select all
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n, m;
vector <int> twin_1;
vector <int> twin_2;
vector <int> numTiles;
int input, testC = 1;
while(cin >> n >> m )
{
if(m == 0 && n ==0)
break;
for(int i = 0; i < n; i++)
{
cin >> input;
twin_1.push_back(input);
}
for(int i = 0; i < m; i++)
{
cin >> input;
twin_2.push_back(input);
}
if(n < m)
{
swap(n, m);
swap(twin_1, twin_2);
}
for(int i = 0; i < n; i++)
{
int temp = 0;
int counter = 0;
int p = 0;
for(int k = i; k < n; k++)
{
p = temp;
for(; p < m; p++)
{
if(twin_1[k] == twin_2[p])
{
counter++;
p++;
temp = p;
break;
}
}
}
numTiles.push_back(counter);
}
swap(n, m);
swap(twin_1, twin_2);
for(int i = 0; i < n; i++)
{
int temp = 0;
int counter = 0;
int p = 0;
for(int k = i; k < n; k++)
{
p = temp;
for(; p < m; p++)
{
if(twin_1[k] == twin_2[p])
{
counter++;
p++;
temp = p;
break;
}
}
}
numTiles.push_back(counter);
}
int maxTiles = 0;
for(int i = 0; i < numTiles.size() - 1; i++)
{
numTiles[i+1] = max(numTiles[i], numTiles[i+1]);
}
cout << "Twin Towers #" << testC << endl << "Number of Tiles : " << numTiles[numTiles.size()-1] << endl << endl;
twin_1.clear();
twin_2.clear();
testC++;
numTiles.clear();
}
return 0;
}