Cod sursa(job #637921)

Utilizator veleanduAlex Velea veleandu Data 20 noiembrie 2011 17:34:44
Problema DreptPal Scor 50
Compilator cpp Status done
Runda .com 2011 Marime 1.32 kb
#include<iostream>
#include<fstream>
#define INF 0x3f3f3f3f
#define MaxN 1005
using namespace std;
long n,m,i,j,l,maxim,minim,act;
long T1[MaxN][MaxN];
long T2[MaxN][MaxN];
long B[MaxN][MaxN];
long cn;
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; l+j<=m && j-l>=1; ++l)
                if ( T1[i][j+l]==T1[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 ( maxim < minim*(l-i+1))
                    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;

}