Cod sursa(job #1435538)

Utilizator rangerChihai Mihai ranger Data 13 mai 2015 19:04:18
Problema PScPld Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<fstream>
#include<string>
#include<vector>
using namespace std;
ifstream cin("pscpld.in");
ofstream cout("pscpld.out");
const int N=1000003;
string s;
vector<int> d1(N), d2(N);
int i,n;
long long Rs;

int main()
{
    cin>>s; n=s.size();
    for (i=0;i<n;i++){
        d1[i]=1;
        while (i-d1[i]>=0 && i+d1[i]<n && s[i-d1[i]]==s[i+d1[i]])d1[i]++;
        if (i>0 && s[i-1]==s[i]){
            d2[i]=1;
            while (i-d2[i]-1>=0 && i+d2[i]<n && s[i-d2[i]-1]==s[i+d2[i]])d2[i]++;
        }
        Rs+=d1[i]+d2[i];
    }
    cout<<Rs;
    return 0;
}