Cod sursa(job #2568670)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 4 martie 2020 09:16:02
Problema PalM Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.78 kb
#include <fstream>
#include <cstring>

#define N 501

using namespace std;

ifstream f ( "palm.in" );
ofstream g ( "palm.out" );

char S[N];

int main()
{   int Max = 1, i, j, k, n;
    f >> ( S + 1 );
    n = strlen ( S + 1 );
    for ( i = 1; i <= n; i++ ){
        for ( j = min ( i - 1, n - i ); j >= 1; j-- ){
            if ( S[i - j] == S[i + j] && S[i - j] <= S[i] ){
                int nr = 3;
                bool ok = 1;
                for ( k = j - 1; k >= 1; k-- ){
                    if ( S[i - k] >= S[i - k - 1] && S[i - k] == S[i + k] && S[i - k] <= S[i] )
                        nr += 2;
                    else{
                        ok = 0;
                        break;
                    }
                }
                if ( ok == 1 ){
                    Max = max ( Max, nr );
                    break;
                }
            }
        }
    }
    for ( i = 1; i < n; i++ ){
        if ( S[i] == S[i + 1] ){
            int nr = 2;
            Max = max ( Max, nr );
            for ( j = min ( i - 1, n - i - 1 ); j >= 1; j--  ){
                if ( S[i - j] == S[i + j + 1] && S[i - j ] <= S[i] ){
                    nr += 2;
                    bool ok = 1;
                    for ( k = j - 1; k >= 1; k-- ){
                        if ( S[i - k] >= S[i - k - 1] && S[i - k] == S[i + k + 1] && S[i - k] <= S[i] )
                            nr += 2;
                        else{
                            ok = 0;
                            break;
                        }
                    }
                    if ( ok == 1 ){
                        Max = max ( Max, nr );
                        break;
                    }
                }
            }
        }
    }
    g << Max;
    return 0;
}