Cod sursa(job #635415)

Utilizator darkseekerBoaca Cosmin darkseeker Data 19 noiembrie 2011 11:20:12
Problema PalM Scor 10
Compilator cpp Status done
Runda .com 2011 Marime 0.94 kb
#include <fstream>
#include <cstring>
#define NMAX 505
#define in "palm.in"
#define out "palm.out"
using namespace std;

char sir[NMAX];
int maxim = 0,lg;

ifstream fin(in);
ofstream fout(out);

inline int isPal(int i,int j,int ans)
{
	int val = ans;
	while(i >= 0 && j < lg && sir[i] < sir[i + 1] && sir[j] < sir[j - 1] && sir[i] == sir[j])
		val += 2, i--, j++;
	return val;
}

int main()
{
	fin.get(sir,NMAX,'\n');
	fin.get();
	
	int i = 0,val,poz;
	
	lg = strlen(sir);
	
	for(i = 1; i < lg - 1; i++)
		{
			if(sir[i-1] == sir[i])
				{
					val = isPal(i-2,i+1,2);
					if(val > maxim)
						maxim = val,poz = i;
				}
			if(sir[i] == sir[i+1])
			{
				val = isPal(i-1,i+2,2);
				if(val > maxim)
					maxim = val,poz = i;
			}
			
			val = isPal(i-1,i+1,1);
			if (val > maxim)
				maxim = val,poz = i;
		}

	fout<<maxim<<'\n';//<<poz<<'\n'<<sir[poz]<<'\n';
	fin.close();
	fout.close();
	return 0;
}