Pagini recente » Cod sursa (job #544905) | Cod sursa (job #1542059) | Cod sursa (job #36101) | Cod sursa (job #2083562) | Cod sursa (job #635351)
Cod sursa(job #635351)
#include <fstream>
#include <cstring>
#define NMAX 505
#define in "palm.in"
#define out "palm.out"
using namespace std;
char sir[NMAX],lg;
int maxim = 1;
ifstream fin(in);
ofstream fout(out);
inline int estePalImpar(int poz)
{
int i = poz -1 , j = poz + 1,ans = 1;
while(i >= 0 && j < lg && sir[i] == sir[j] && sir[i] <= sir[i+1] && sir[j] <= sir[j-1])
{
ans+=2;
i--;
j++;
}
return ans;
}
inline int estePalPar1(int poz)
{
int i = poz,j = poz + 1,ans = 0;
if(sir[i] != sir[j])
return 1;
else
ans = 2;
i--;
j++;
while(i >= 0 && j < lg && sir[i] == sir[j] && sir[i] <= sir[i+1] && sir[j] <= sir[j-1])
{
ans+=2;
i--;
j++;
}
return ans;
}
inline int estePalPar2(int poz)
{
int i = poz - 1,j = poz,ans = 0;
if(sir[i] != sir[j])
return 1;
else
ans = 2;
i--;
j++;
while(i >= 0 && j < lg && sir[i] == sir[j] && sir[i] <= sir[i+1] && sir[j] <= sir[j-1])
{
ans+=2;
i--;
j++;
}
return ans;
}
int main()
{
fin.get(sir,NMAX,'\n');
fin.get();
int i = 0;
lg = strlen(sir);
for(i = 0; i < lg; i++)
{
if(estePalImpar(i) > maxim)
maxim = estePalImpar(i);
if(estePalPar1(i) > maxim)
maxim = estePalPar1(i);
if(estePalPar2(i) > maxim)
maxim = estePalPar2(i);
}
fout<<maxim<<'\n';
fin.close();
fout.close();
return 0;
}