Pagini recente » Cod sursa (job #1907755) | Cod sursa (job #2458871) | Cod sursa (job #125090) | Cod sursa (job #2967) | Cod sursa (job #38636)
Cod sursa(job #38636)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
#define NMAX 2006
int N, i, j, o[NMAX][NMAX];
char a[NMAX], b[NMAX];
int main(void)
{
freopen("elimin2.in", "r", stdin);
freopen("elimin2.out", "w", stdout);
gets(a+1), N = strlen(a+1);
memcpy(b, a, sizeof(a));
reverse(b+1, b+N+1);
memset(o, 0, sizeof(o));
for (i = 1; i <= N; i ++)
for (j = 1; j <= N; j ++)
o[i][j] = max(max(o[i-1][j], o[i][j-1]), a[i]==b[j] ? 1+o[i-1][j-1] : 0);
for (i = j = N; i && j; )
if (o[i][j] == 1+o[i-1][j-1])
printf("%c", a[i]), -- i, -- j;
else
{
if (o[i-1][j]==o[i][j]) -- i; else -- j;
}
printf("\n");
return 0;
}