HDU3613:Best Reward(二)

2014-11-24 08:33:20 · 作者: · 浏览: 1
scanf("%s",S);
memset(sum,0,sizeof(sum));
for(i = 0;S[i];i++)
sum[i+1] = val[S[i]-'a'] + sum[i];
int len = strlen(S);
turn(S,T,strlen(S));
EKMP(S,T,f,extend2);
EKMP(T,S,f,extend1);
int max = -1000000000;
for(i = 0;i
{
if(i && extend1[i]+i == len)
{
int pos = extend1[i];
int tmp = sum[pos];
if(extend2[pos] + pos == len)
{
tmp+=sum[len]-sum[pos];
}
if(tmp > max)
max = tmp;
}
else
{
int pos = i+1,tmp = 0;
if(extend2[pos]+pos == len)
{
tmp+=sum[len] - sum[pos];
}
if(tmp > max)
max = tmp;
}
}
printf("%d\n",max);
}
return 0;
}