Pagini recente » Borderou de evaluare (job #2734103) | Cod sursa (job #286237) | Borderou de evaluare (job #2149691) | Arhiva Educationala | Cod sursa (job #635377)
Cod sursa(job #635377)
#include <cstdio>
#include <iostream>
using namespace std;
#define MAXN 550
#define INF 0x3f3f3f3f
inline int max(int a, int b)
{
return a < b ? b : a;
}
FILE* fin = fopen("palm.in", "r");
FILE* fout = fopen("palm.out", "w");
char buf[MAXN];
int len = 0;
int checkpali(int a, int b)
{
int l = 1;
while (a - l >= 0 && b + l <= len && buf[a - l] == buf[b + l]) {
if (buf[a - l] > buf[a - l + 1] || buf[b + l -1] < buf[b + l]) {
break;
}
++l;
}
return 2 * l - (a == b);
}
int main()
{
fgets(buf, sizeof(buf), fin);
while (buf[len] != '\n' && buf[len] != '\0') {
++len;
}
int p = 0;
for (int i = 0; i <= len; ++i) {
if (buf[i] == buf[i + 1]) {
p = max(p, checkpali(i, i + 1));
}
p = max(p, checkpali(i, i));
}
fprintf (fout, "%d\n", p);
fclose(fin);
fclose(fout);
return 0;
}