Cod sursa(job #1693828)
| Utilizator | 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;
}
