Pagini recente » Cod sursa (job #2056173) | Cod sursa (job #891609) | Cod sursa (job #764049) | Cod sursa (job #889227) | Cod sursa (job #679232)
Cod sursa(job #679232)
#include <fstream>
#include <cstring>
# define dim 505
# define dim2 28
using namespace std;
int a[ dim ][ dim ][ dim2 ];
char sir[ dim ];
int main()
{
ifstream f("palm.in");
ofstream g("palm.out");
f.getline( sir + 1, 510 );
int n = strlen( sir + 1 );
int sol = 0;
for ( int i = 1 ; i <= n ; ++i )
{
for ( int j = i ; j <= n ;++j )
{
int st = j - i + 1 ,dr = j;
if( sir[ st ] == sir[ dr ] )
{
if ( st != dr )
a[ st ][ dr ][ sir [ st ] -'a' ] = max( a[ st ][ dr ][ sir[ st ] - 'a' ] , 2 );
else
a[ st ][ dr ][ sir [ st ] -'a' ] = max( a[ st ][ dr ][ sir[ st ] - 'a' ] , 1 );
if( i > 2)
for( int l = sir[ st ] - 'a' ; l < 26 ; ++l )
a[ st ][ dr ][ sir[ st ] - 'a' ] = max ( a[ st ][ dr ][ sir[ st ] -'a' ] , a[ st + 1 ][ dr - 1 ][ l ] + 2 );
}
if( i > 1 )
for( int l = 0 ; l < 26 ; ++l )
a[ st ][ dr ][ l ] = max( a[ st ][ dr ][ l ] , max( a[ st ][ dr - 1 ][ l ] , a[ st + 1 ][ dr ][ l ] ) );
}
}
/*for ( int i = 1 ; i <= n ; ++i )
for ( int j = i ; j <= n ; ++j )
{
g << i << ' ' << j;
g << '\n';
for( int l = 0 ; l < 26 ; ++l )
g << a[ i ][ j ][ l ] <<' ';
g <<'\n';
}*/
for( int i = 1 ; i <= n ; ++i )
for( int j = i ;j <= n ; ++j )
for( int k = 0 ; k < 26 ; ++k )
if( a[ i ][ j ][ k ] > sol )
sol = a[ i ][ j ][ k ];
g << sol;
return 0;
}