Cod sursa(job #1693828)

Utilizator dragos231456Neghina Dragos dragos231456 Data 23 aprilie 2016 22:34:01
Problema PScPld Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#define n s.size()-1
using namespace std;
ifstream f("pscpld.in"); ofstream g("pscpld.out");
string s;
char k;
int p=1;
long long nr;
int main()
{
    getline(f,s);
    if(s[0]==s[1]) p=2;
    else
    {
        p=1;
        nr=1;
    }
    k=s[1];
    if(s[2]==k) p++;
    else
    {
        nr+=(p*(p+1)/2);
        p=1;
        k=s[2];
    }
    if(p==1 && s[2]==s[0]) nr++;
    for(int i=3;i<=n;++i)
    {
        if(s[i]==k) ++p;
        else
        {
            k=s[i];
            nr+=(p*(p+1)/2);
            p=1;
            while(s[i+p-1]==s[i-p-1])
            {
                p++;
            }
            while(s[i+p-1]==s[i-p-2])
            {
                p++;
            }
            if(p>1)
            {
                nr+=p;
                p=1;
            }
            p=1;
        }
    }
    g<<nr;
    return 0;
}