Pagini recente » Cod sursa (job #2461083) | Cod sursa (job #564048) | Cod sursa (job #3241118) | Cod sursa (job #1742433) | Cod sursa (job #2566526)
#include <iostream>
#include <fstream>
#include <cstring>
#include <cctype>
using namespace std;
ifstream f("text.in");
ofstream g("text.out");
int n, i = 0, j = 0, v[20010], b[20010], before[20010], maxi, maxi1, poz, jj;
char a, s[20010][30];
void Afisare(int poz)
{
if (before[poz - 1] != 0)
{
Afisare(before[poz - 1]);
g << s[poz - 1] << '\n';
}
else
g << s[poz - 1] << '\n';
}
int main()
{
b[0] = 1;
while (f.get(a))
{
if (isalpha(a))
s[i][j++] = a;
else
{
jj = j;
if (j > 0)
v[i] = j;
if (i > 0)
{
j = i - 1;
maxi = 0;
while (j >= 0)
{
if (s[i][0] == s[j][v[j] - 1])
{
if (b[j] > maxi)
{
maxi = b[j];
before[i] = j + 1;
}
}
--j;
}
b[i] = maxi + 1;
if (b[i] > maxi1)
{
maxi1 = b[i];
poz = i + 1;
}
}
j = 0;
if (jj > 0)
++i;
}
}
n = i;
g << n << '\n' << n - maxi1 << '\n';
Afisare(poz);
return 0;
}