Cod sursa(job #639040)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 22 noiembrie 2011 10:48:20
Problema PalM Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#include<string.h>
using namespace std;

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

char a[503];
int n,smax;

void pal1(int poz) {
    int i,lung=1;

    for(i=poz-1;i!=0 && 2*poz-i<=n;--i)
        if(a[i]==a[2*poz-i] && a[i]<=a[i+1])
            lung+=2;
        else
            break;

    if(lung>smax)
        smax=lung;
}

void pal2(int poz) {
    int i,lung=2;

    if(a[poz]!=a[poz+1])
        return;

    for(i=poz-1;i!=0 && 2*poz-i+1<=n;--i)
        if(a[i]==a[2*poz-i+1] && a[i]<=a[i+1])
            lung+=2;
        else
            break;

    if(lung>smax)
        smax=lung;
}

int main() {
    int i;

    in.getline(a+1,501);

    a[0]=90;

    n=strlen(a);

    for(i=1;i<=n;++i) {

        pal1(i);
        pal2(i);

    }

    out << smax;

    return 0;
}