Cod sursa(job #2112336)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 23 ianuarie 2018 13:01:39
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("piese.in");
ofstream fout("piese.out");
int n, m, nrp, a[502][502];
int find_max_pow(int val)
{
    int p=1;
    while(p<=val) p*=2;
    return p/2;
}
void umple(int x, int y, int lmax, int cmax)
{
    int i, j, p;
    p=find_max_pow(min(lmax-x+1,cmax-y+1));
    ++nrp;
    for(i=x; i<=x+p-1; i++)
        for(j=y; j<=y+p-1; j++)
            a[i][j]=nrp;
    if(x+p<=lmax) umple(x+p,y,lmax,y+p-1);
    if(y+p<=cmax) umple(x,y+p,lmax,cmax);
}
int main()
{
    int i, j;
    fin>>n>>m;
    umple(1,1,n,m);
    fout<<nrp<<'\n';
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++) fout<<a[i][j]<<' ';
        fout<<'\n';
    }
    return 0;
}