Cod sursa(job #1569721)

Utilizator ArrowBasseStefan ArrowBasse Data 15 ianuarie 2016 21:02:29
Problema PScPld Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;




int get_number_of_palindroms_from(int x, const char *str, int l)
{
    int number=1, distance=0;
    bool possible_identic=true;
    do
    {
        distance++;
        if(x-distance<0)
            break;
        else
        {
            if(possible_identic)
            {
                if(str[x-distance]==str[x])
                {
                    number++;
                }
                else
                {
                    possible_identic=false;
                }
            }
        }
        if(x+distance==l)
        {
            break;
        }
        else
        {
            if(str[x+distance]!=str[x])
            {
                possible_identic=false;
            }
            if(str[x-distance]==str[x+distance])
            {
                number++;
            }
            else
                break;
        }

    }
    while(1);
    return number;
}

int main()
{
    fstream f, g;
    char str[1000000];
    int i, l, sum=0;
    f.open("pscpld.in", ios::in);
    g.open("pscpld.out", ios::out);
    f>>str; l=strlen(str);
    for(i=0; i<l; i++)
    {
        sum+=get_number_of_palindroms_from(i, str, l);
    }
    g<<sum;

    return 0;
}