Cod sursa(job #1752425)

Utilizator Moise_AndreiMoise Andrei Moise_Andrei Data 3 septembrie 2016 20:37:27
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("piese.in");
ofstream out("piese.out");
int v[505][505];
int n, m;
int r = 1;
int put(int x, int y){
    int p = 1;
    while(p * 2 <= min(x, y))
        p = p * 2;
    return p;
}
void f(int l, int c, int a, int b){
    int p = put(a - l + 1, b - c + 1);
    for(int i = l; i <= l + p - 1; i++)
        for(int j = c; j <= c + p - 1; j++)
            v[i][j] = r;
    if(l > a || c > b)
        return ;
    r++;
    f(l, c + p, l + p - 1, m);
    f(l + p, c, a, b);
}

int main()
{
    in >> n >> m;
    int a = n, b = m;
    f(1, 1, n, m);
    out << r - 1 << "\n";
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++)
            out << v[i][j] << " ";
        out << '\n';
    }
    return 0;
}