Cod sursa(job #636578)

Utilizator elfusFlorin Chirica elfus Data 19 noiembrie 2011 21:24:51
Problema PalM Scor 20
Compilator cpp Status done
Runda .com 2011 Marime 0.88 kb
#include <stdio.h>
#include <string.h>
#define LMAX 1 << 9

int D[LMAX], first[LMAX], x[LMAX];
char s[LMAX];

int main ()
{
    int N, i, j, it;

    freopen ("palm.in", "r", stdin);
    freopen ("palm.out", "w", stdout);

    gets (s + 1);
    N = strlen (s + 1);
    for (i = 1; i <= N; i ++)
        x[i] = s[i] - 'a';

    for (i = 1; i <= N; i ++)
    {
        for (j = 1; j <= i; j ++)
            if (x[j] == x[i])
                break;

        for (it = j + 1; it < i; it ++)
            if (x[it] >= x[i] && (first[it] > j || first[it] == 0))
                if (D[it] > D[i])
                    D[i] = D[it];
        if (i == j)
            D[i] ++;
        else
            D[i] += 2;
        first[i] = j;

    }
    int ma = 0;
    for (i = 1; i <= N; i ++)
        if (D[i] > ma)
            ma = D[i];
    printf ("%d", ma);
    return 0;
}