Cod sursa(job #294433)

Utilizator ciorile.chioareBogatu Adrian ciorile.chioare Data 2 aprilie 2009 15:41:16
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
/*
ID: masterw1
PROG: calfflac
LANG: C++
*/


#include<stdio.h>
#define N 20008
#define MAX(a,b) a>b?a:b

char s[N];
char s1[N];
int a[2];

void citire()
{
	gets(s);
	
	for(int i=0;s[i];++i)
	{
		if(s[i]>='A'&&s[i]<='Z')
			s1[i]=s[i]-'A'+'a';
		else
			s1[i]=s[i];
	}
}

bool ver(char c)
{
	if(c>='a'&&c<='z')
		return true;
	return false;
}

int cazimpar(int x)
{
	int i,j,p=0;
	for(i=x,j=x;s1[j]!=s1[i];j--,++i,++p)
	{
		while(ver(s1[i]))
			++i;
		while(ver(s1[j]))
			--j;
	}
	
	return p;
}

int cazpar(int x)
{
	int i,j,p=0;
	for(i=x+1,j=x;s1[j]!=s1[i];j--,++i,++p)
	{
		while(ver(s1[i]))
			++i;
		while(ver(s1[j]))
			--j;
	}
	
	return p;
}


void Rez()
{
	int i,j,k,max1,max2,max=0;
	int q,w;
	for(k=1;s1[i];++k)
	{
		q=cazimpar(k);
		w=cazpar(k);
		max1=2*q-1;
		max2=2*w;
		if(max1>max)
		{
			max=MAX(max,max1);
			a[0]=k-q+1;
			a[1]=k+q-1;
		}
		if(max2>max)
		{
			max=MAX(max,max2);
			a[0]=k-w;
			a[1]=k+w-1;
		}
	}
}

void afisare()
{
	for(int i=a[0];i<a[1];++i)
		printf("%c",s[i]);
}

int main()
{
	freopen("calfflac.in","r",stdin);
	freopen("calfflac.out","w",stdout);
	
	citire();
	Rez();
	afisare();
	printf("%d %d",a[0],a[1]);
	
	return 0;
}