Cod sursa(job #635517)

Utilizator Alexxino7Alexandru Popescu Alexxino7 Data 19 noiembrie 2011 12:41:48
Problema DreptPal Scor 0
Compilator cpp Status done
Runda .com 2011 Marime 1.14 kb
#include<fstream>
using namespace std;

int A[1002][1002],N,M,P[1002],C[1002][1002],lungime,latime,Amax,k=1,B[1001];

void citeste();
void rezolva();
int verificap();
void afiseaza();

int main(){
	citeste();
	rezolva();
	afiseaza();
	return 0;
}

void citeste(){
	ifstream fin("dreptpal.in");
	fin>>N>>M;
	int i,j;
	for(i=1;i<=N;i++){
		for(j=1;j<=M;j++)
			fin>>A[i][j];
	}
	fin.close();
}
void rezolva(){
	int i,j,q,q1;
	for(i=1;i<=N;i++){
		for(j=1;j<=M;j++,k=1){
			P[k]=A[i][j+k-1];
			k+=2;
			while(k<=M){
				P[k-1]=A[i][j+k-2];
				P[k]=A[i][j+k-1];
				if(verificap()){
					latime=k;
					lungime=1;
					q1=1;
					do{
						for(q=1;q<=k;q++)
							P[q]=A[i+q1][j+q-1];
						q1++;
						lungime++;
					}while(verificap());
					lungime--;
					if(Amax<lungime*latime)
						Amax=lungime*latime;
				}
				k+=2;
			}
		}
	}
}

int verificap(){
	int i,ok=1;
	for(i=1;i<=k;i++)
		B[k-i+1]=P[i];
	for(i=1;i<=k && ok;i++){
		if(P[i]!=B[i])
			ok=0;
	}
	if(ok)
		return 1;
	else
		return 0;
}

void afiseaza(){
	ofstream fout("dreptal.out");
	fout<<Amax<<"\n";
	fout.close();
}