Página Principal

MC521-1s2014

MC621-2s2014

MC521-1s2015

MC621-2s2015

MC521-1s2016

Conteúdo

Área Reservada

edit sidebar

TIMUS 1297

Autores: Helder Lima e Lucas Majeste

using namespace std;
#include <iostream>

int busca(int init, int ind);
bool calcula(int init, int end);

char str[1001];
int maxi, initInd, endInd, ind;

int main(){

    cin >> str;
    maxi = 0;

    for(int a = 0;str[a] != '\0';a++){

        ind = 0;

        while(ind != -1){

            ind = busca(a, ind);

            if(calcula(a, ind)){
                if(ind - a > maxi){
                    initInd = a;
                    endInd = ind;
                    maxi = ind-a;
                }
            }
        }

    }

    if(maxi == 0)
        cout << str[0] << endl;
    else{
        for(int a = initInd;a <= endInd;a++)
            cout << str[a];

        cout << endl;
    }

    return 0;
}

int busca(int init, int ind){
    int newInd = -1;

    for(int a = ind+1;str[a] != '\0';a++){
        if(str[a] == str[init]){
            newInd = a;
            break;
        }
    }

    return newInd;
}

bool calcula(int init, int end){
    bool palin = true;

    /*
    for(int a = init;a <= end;a++)
        cout << str[a];

    cout << endl;
    */


    if(end == -1)
        return false;

    if((end-init)%2 == 1){
        for(int cont = init;cont <= init+(end-init)/2;cont++){
            if(str[cont] != str[end+init-cont]){
                palin = false;

                break;
            }
        }
    }
    else{
        for(int cont = init;cont <= init+(end-init)/2-1;cont++){
            if(str[cont] != str[end+init-cont]){
                palin = false;

                break;
            }
        }
    }

    /*
    if(palin)
        cout << endl << "Certo" << endl;
    else
        cout << endl << "Errado" << endl;
    */


    return palin;
}