Cod sursa(job #2030321)

Utilizator maria15Maria Dinca maria15 Data 1 octombrie 2017 14:12:41
Problema Piese Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>

using namespace std;

short n, i, m;
int v[503][503], ant;

ifstream fin("piese.in");
ofstream fout("piese.out");

void umplere(short i1, short j1, short i2, short j2){
    if(i1>=1 && i1<=n && j1<=m && j1>=1 && i2>=1 && i2<=n && j2<=m && j2>=1 && i1<=i2 && j1<=j2){
        short a = min(i2-i1+1, j2-j1+1);
        short a1 = a;
        short maxim = 0, nr = 0;
        for(short i=8;i>=0;i--){
            short t = (1<<i);
            if(a1>=t){
                maxim = i;
                break;
            }
        }
        short lung = (1<<maxim);
        for(short i=i1;i<=i1+lung-1;i++)
            for(short j=j1;j<=j1+lung-1;j++)
                if(v[i][j] == 0){
                    if(j == j1 && i == i1)
                        ant++;
                    v[i][j] = ant;
                }


        umplere(i1+lung, j1, n, j1+lung-1);
        umplere(i1, j1+lung, i1+lung-1, m);

    }
}

int main(){
    fin>>n>>m;
    umplere(1, 1, n, m);
    fout<<ant<<"\n";
    for(short i=1;i<=n;i++){
        for(short j=1;j<=m;j++)
            fout<<v[i][j]<<" ";
        fout<<"\n";
    }
    return 0;
}