Pagini recente » Cod sursa (job #2214597) | Cod sursa (job #1358985) | Cod sursa (job #1486364) | Cod sursa (job #846726) | Cod sursa (job #1746038)
# 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" );
int i, c, r, m, t;
char ch;
string s;
fin.get( ch );
while ( ch != '\n' ) {
s.push_back( '#' );
s.push_back( ch );
fin.get( ch );
}
s.push_back( '#' );
//s[0] = '%';
cout << s << endl;
c = r = 0;
m = 0;
for ( i = 1; i < s.size() - 1; 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 + 1 ) / 2;
}
fout << m;
fin.close();
fout.close();
return 0;
}