Cod sursa(job #2540488)

Utilizator NashikAndrei Feodorov Nashik Data 7 februarie 2020 11:21:49
Problema Piese Scor 100
Compilator cpp-64 Status done
Runda irim_eralumis Marime 0.85 kb
//#include <iostream>
#include <fstream>
using namespace std;
int v[505][505],cnt;
ifstream cin("piese.in");
ofstream cout("piese.out");
void rec(int x1,int y1,int x2,int y2){
    if(x1>x2 or y1>y2)
        return;
    //cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<"\n";
    if(x1==x2 and y1==y2){
        v[x1][y1]=++cnt;
        return;
    }
    int prod=1;
    while(prod<=min(x2-x1+1,y2-y1+1)){
        prod*=2;
    }
    prod/=2;
    ++cnt;
    for(int i=x1;i<=x1+prod-1;i++){
        for(int j=y1;j<=y1+prod;j++){
            v[i][j]=cnt;
        }
    }
    rec(x1+prod,y1,x2,y1+prod-1);
    rec(x1,y1+prod,x2,y2);
}
int main()
{
    int n,m;
    cin>>n>>m;
    rec(1,1,n,m);
    cout<<cnt<<"\n";
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)
            cout<<v[i][j]<<" ";
        cout<<"\n";
    }
    return 0;
}