Cod sursa(job #635377)

Utilizator nandoLicker Nandor nando Data 19 noiembrie 2011 10:56:57
Problema PalM Scor 20
Compilator cpp Status done
Runda .com 2011 Marime 0.86 kb
#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;
}