Cod sursa(job #2486856)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 3 noiembrie 2019 16:31:01
Problema Piese Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
#define inf 2000000000
#define dim 515
using namespace std;
ifstream fin("piese.in");
ofstream fout("piese.out");
int nr,n,m;
int s[dim][dim],i,j;
void increment(int ls,int cs,int lj,int cj){
++nr;
s[ls][cs]+=nr;
s[ls][cj+1]-=nr;
s[lj+1][cs]-=nr;
s[lj+1][cj+1]+=nr;
}
void solve(int ls,int cs,int lj,int cj){
    if(ls>lj||cs>cj){
        return;
    }
    ///linie sus coloana sus linie jos coloana jos
    int p=1;
    while(p<=min(lj-ls+1,cj-cs+1)){
        p*=2;
    }
    p>>=1;
    increment(ls,cs,ls+p-1,cs+p-1);

    solve(ls,cs+p,ls+p-1,cj);
    solve(ls+p,cs,lj,cs+p-1);
    solve(ls+p,cs+p,lj,cj);
}
int main(){
    fin>>n>>m;
    solve(1,1,n,m);
    fout<<nr<<"\n";
    for(i=1;i<=n;i++,fout<<"\n")
    for(j=1;j<=m;j++){
        s[i][j]=s[i][j-1]+s[i-1][j]+s[i][j]-s[i-1][j-1];
        fout<<s[i][j]<<" ";
    }
}