Cod sursa(job #1978234)

Utilizator georgerapeanuRapeanu George georgerapeanu Data 7 mai 2017 10:44:30
Problema PScPld Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;FILE *f=fopen("pscpld.in","r");FILE *g=fopen("pscpld.out","w");char A[1000005];char B[2000005];int L[2000005];int id,N;long long rez;int main(){fgets(A+1,1000005,f);N=strlen(A+1);N=N-(A[N]=='\n');for(int i=1;i<=N;i++)B[2*i]=A[i],B[2*i-1]='#';B[N=2*N+1]='#';for(int i=1;i<=N;i++){if(id+L[id]>=i)L[i]=min(L[2*id-i],id+L[id]-i);while(i-L[i]>1&&B[i-L[i]-1]==B[i+L[i]+1])L[i]++;rez+=(L[i]+1)/2;if(i+L[i]>id+L[id])id=i;}fprintf(g,"%lld",rez);return 0;}