Cod sursa(job #637562)

Utilizator veleanduAlex Velea veleandu Data 20 noiembrie 2011 15:13:04
Problema DreptPal Scor 0
Compilator cpp Status done
Runda .com 2011 Marime 1.32 kb
#include<fstream>
#include<iostream>
#define INF 0x3f3f3f3f
#define Nmax 1005
using namespace std;
long i,j,l,minim=INF,maxim=0,cn,k,n,m,act;
long T1[Nmax][Nmax];
long T2[Nmax][Nmax];
long B[Nmax][Nmax];
int main()
{
    ifstream in("dreptpal.in");
    ofstream out("dreptpal.out");
    in>>n>>m;
    for ( i=1; i<=n; ++i)
        for ( j=1; j<=m; ++j)
            in>>T1[i][j];
    for ( i=1; i<=n; ++i )
        for ( j=1; j<=m; ++j)
        {
            cn=T1[i][j];
            while (cn)
            {
                T2[i][j]=T2[i][j]*10+cn%10;
                cn/=10;
            }
        }
    for ( i=1; i<=n; ++i)
        for ( j=1; j<=m; ++j)
        {
            act=0;
            for ( l=0; j-l>=1 && j+l<=m; ++l)
                if ( T1[i][j-l]==T2[i][j+l] )
                    act++;
                else
                    break;
            B[i][j]=act*2-1;
        }
    for ( i=1; i<=n; ++i)
        for (j=1; j<=m; ++j)
        {
            minim=INF;
            for ( l=i; l<=n; ++l)
            {
                if ( minim > B[l][j])
                    minim=B[l][j];
                if ( minim*(l-i+1) > maxim)
                    maxim=minim*(l-i+1);
            }
        }
    /*for ( i=1; i<=n; ++i,cout<<"\n")
        for ( j=1; j<=m; ++j)
            cout<<B[i][j]<<" ";*/
    out<<maxim<<"\n";
    return 0;
}