Pagini recente » Clasament gggg | Cod sursa (job #1421052) | Cod sursa (job #3255121) | Cod sursa (job #2589073) | Cod sursa (job #1593816)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("pscpld.in");
ofstream g("pscpld.out");
char s[2000001];
int p[2000001];
int main(){
char ch;
int n, i, sum, id, mx;
s[0] = '$';
s[1] = '#';
i = 2;
f.get(ch);
while( f.eof() == 0 && ch != '\n' ){
s[i++] = ch;
s[i++] = '#';
f.get(ch);
}
s[i] = '\0';
n = i;
sum = 0;
id = mx = 0;
for( i = 1; i < n; i++ ){
if( i < mx )
if( mx - i - p[2 * id - i] >= 0 )
p[i] = p[2 * id - i];
else
p[i] = mx - i;
else
p[i] = 1;
while( s[i + p[i]] == s[i-p[i]] )
p[i]++;
if( i + p[i] > mx ){
id = i;
mx = i + p[id];
}
sum += (p[i] / 2);
}
g << sum;
return 0;
}