Cod sursa(job #982447)

Utilizator remus88Neatu Remus Mihai remus88 Data 9 august 2013 11:43:02
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.68 kb
#include <fstream>
using namespace std;

ifstream fin("dreptunghiuri2.in");
ofstream fout("dreptunghiuri2.out");
short a[1002][1002];
short b[1002][1002];
short x,y;
void parcurgere(short i, short j);

int main()
{
    short l,c;
    short nro;
    short o = 0;
    int nr = 0;
    fin>>l>>c;
    for (short i = 1; i<= l; i++)
        for (short j = 1; j<= c; j++)
            fin>>a[i][j];
    for (short i = 0; i<= l+1;i++)
    {
        a[i][0] = 0;
        a[i][c+1] = 0;
    }
    for (short i = 0; i<=c+1;i++)
    {
        a[0][i] = 0;
        a[l+1][i] = 0;
    }
    for (short i = 1; i<= l; i++)
        for (short j = 1; j<= c; j++)
            if (a[i][j] == 1)
            {
                x = i;
                y = j;
                while (a[i][y] == 1)
                    y++;
                while (a[x][j] == 1)
                    x++;
                for (short k = i; k <= x-1; k++)
                    for (short p = j; p<= y-1; p++)
                    {
                        b[k][p]++;
                        if (b[k][p] > o)
                        {
                            o = b[k][p];
                            nro = 0;
                        }
                        if (b[x-1][y-1] == o)
                            nro++;
                    }
                parcurgere(i,j);
                nr++;
            }
    fout<<nr<<" "<<o<<" "<<nro;
    fout.close();
    fin.close();
    return 0;
}

void parcurgere(short i, short j)
{
    if (a[i][j] == 1)
    {
        a[i][j] = 0;
        parcurgere(i+1,j);
        parcurgere(i-1,j);
        parcurgere(i,j-1);
        parcurgere(i,j+1);
    }
}