Cod sursa(job #1152569)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 24 martie 2014 20:09:23
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#define NMAX 510

using namespace std;

ifstream f("piese.in");
ofstream g("piese.out");

int n, m, nr, urm[NMAX], mx[NMAX][NMAX], sol[NMAX][NMAX];

void Citeste()
{
    f>>n>>m;
}

void Preprop()
{
    int i, j, vali, valj, lim=max(n, m);

    for (i=2; i<=lim; ++i) urm[i]=urm[i>>1]+1;

    for (i=1; i<=n; ++i)
        for (j=1; j<=m; ++j)
        {
            vali=n-i+1; valj=m-j+1;
            mx[i][j]= 1 << urm[min (vali, valj) ];
        }
}

void Solve()
{
    int i, j, ii, jj, c;

    for (i=1; i<=n; ++i)
        for (j=1; j<=m; ++j)
            if (!sol[i][j])
            {
                c=mx[i][j]; ++nr;

                for (ii=i; ii<i+c; ++ii)
                    for (jj=j; jj<j+c; ++jj) sol[ii][jj]=nr;
            }
}

void Scrie()
{
    int i, j;

    g<<nr<<"\n";

    for (i=1; i<=n; ++i)
    {
        for (j=1; j<=m; ++j) g<<sol[i][j]<<" ";
        g<<"\n";
    }
}

int main()
{
    Citeste();

    Preprop();

    Solve();

    Scrie();

    f.close();
    g.close();
    return 0;
}