Pagini recente » Cod sursa (job #96542) | Cod sursa (job #1730806) | Cod sursa (job #1350729) | Cod sursa (job #126958) | Cod sursa (job #1826381)
# include <iostream>
# include <fstream>
# include <string.h>
# define MAX_LEN 3000000
using namespace std;
int h[MAX_LEN];
int main() {
ifstream fin( "pscpld.in" );
ofstream fout( "pscpld.out" );
ios::sync_with_stdio( false );
int i, c, r, t;
long long m;
char ch;
string s;
s.push_back( '^' );
fin.get( ch );
while ( 'a' <= ch && ch <= 'z' ) {
s.push_back( '#' );
s.push_back( ch );
fin.get( ch );
}
s.push_back( '#' );
s.push_back( '*' );
c = r = 0;
m = 0;
for ( i = 2; i < s.size() - 2; i ++ ) {
if ( i >= r )
t = 0;
else
t = h[c - ( i - c )];
while ( s[i + t] == s[i - t] )
t ++;
t --;
h[i] = t;
if ( i + t > r ) {
r = i + t;
c = i;
}
m += t / 2 + 1 - i % 2;
}
fout << m;
fin.close();
fout.close();
return 0;
}