Pagini recente » Cod sursa (job #309708) | Cod sursa (job #3238236) | Cod sursa (job #1085729) | Cod sursa (job #2164761) | Cod sursa (job #635683)
Cod sursa(job #635683)
#include <iostream>
#include <fstream>
#include <string.h>
#define N 500
#define min(a,b) ((a>b)?b:a)
using namespace std;
ifstream f("palm.in");
ofstream g("palm.out");
int main() {
char s[N];
int o[N]={0},r[N]={0},n,i,temp,j,max=0,len,p,m;
f>>s;
n=strlen(s)-1;
o[0]=1,r[n]=1;
for(i=1;i<=n;i++) {
temp=s[i]-s[i-1];
if(temp >= 0) {
o[i]+=o[i-1]+1;
} else {
o[i]=1;
}
temp=s[n-i]-s[n-i+1];
if(temp >= 0) {
r[n-i]+=r[n-i+1]+1;
} else {
r[n-i]=1;
}
}
for(i=0;i<=n;i++) {
cout<<o[i]<<" ";
}
cout<<endl;
for(i=0;i<=n;i++) {
cout<<r[i]<<" ";
}
for(i=1;i<=n;i++) {
if(o[i-1] < o[i] && r[i+1] < r[i]) {
m=min(r[i+1],o[i-1]);
len=2*m+1;
p=1;
if(max < len) {
for(j=1;j<=m;j++) {
if(s[i+j]!=s[i-j]) {
p=0;
break;
}
}
if(!p) {
if(max < 2*(j-1)+1) {
max=2*(j-1)+1;
}
} else {
max=len;
}
}
}
}
//cout<<endl;
g<<max;
f.close();
g.close();
return 0;
}