Cod sursa(job #637054)

Utilizator andreea29Iorga Andreea andreea29 Data 20 noiembrie 2011 11:02:28
Problema PalM Scor 10
Compilator cpp Status done
Runda .com 2011 Marime 1.45 kb
#include<fstream>
#include<iostream>
using namespace std;
ifstream f("palm.in");
ofstream h("palm.out");


int n=0, v[600], best[600], poz, maxim, k, l[600], nr, bun, m, j, bestf[600], ok, mijloc, d, i, s, r;
char c, a[600];
int main()
{

	int i, j, poz;
	nr = 1;
	while (!f.eof())
	{
		f>>c;
		n=n+1;
		a[n]=c;
	}
	n=n-1;
	for (i=1; i<=n; i++)
		v[i]=int(a[i]);
	for (i = 1; i <= n; i++)
	{
		maxim=1;
		for (j=i+1; j<=n; j++)
			if (v[j]==v[i])
			{
				poz=j;
				bun=j;
				ok=1;
				k=i;
				s=i;
				if ((i+j)%2==0)
				{
					mijloc=(i+j)/2;
					while (ok==1 && k<mijloc)
					{
						k=k+1;
						bun=bun-1;
						if (v[k]!=v[bun])
							ok=0;
						if (v[k]<v[k-1])
							ok=0;
						if (v[bun]<v[bun+1])
							ok=0;
					}
					if (ok==0)
						best[i]=1;
					else
						best[i]=(j-i)+1;
					if (maxim<best[i])
					{
						maxim=best[i];
					}
				}
				else
				{
					mijloc=(i+j)/2;
					while (ok==1 && k<=mijloc)
					{
						k=k+1;
						bun=bun-1;
						if (v[k]!=v[bun])
							ok=0;
						if (v[k]<v[k-1])
							ok=0;
						if (v[bun]<v[bun+1])
							ok=0;
					}
					if (ok==0)
						best[i]=1;
					else
						best[i]=(j-i)+1;
					if (maxim<best[i])
					{
						maxim=best[i];
					}
				}
					
			}
			bestf[i]=maxim;
		

	}
	maxim = 0; 
	for (i = 1; i <= n; i++)
		if (maxim < bestf[i])
			maxim = bestf[i]; 
	h<<maxim<<'\n';
	f.close();
	h.close();
	return 0;   
}