Pagini recente » Cod sursa (job #781823) | Cod sursa (job #432105) | Cod sursa (job #1100365) | Cod sursa (job #3281203) | Cod sursa (job #733687)
Cod sursa(job #733687)
#include <fstream>
using namespace std;
ifstream F("piese.in");
ofstream G("piese.out");
#define Dm 505
#define nr(x,n) n-x+1
int N,M,P;
int Rez[Dm][Dm];
inline int ln(int val,int x)
{ return ( val>x ) ? val : ln(val*2,x); }
void Acp(int x,int y,int n,int m)
{
int v=min( ln(1,n)/2 , ln(1,m)/2 );
int vx=x+v-1,vy=y+v-1;
bool oke=false;++P;
for (int i=x;i<=vx;++i)
for (int j=y;j<=vy;++j)
{
Rez[i][j]=P;
oke=true;
}
if ( !oke )
--P;
if ( x<=vx || y<=vy )
{
if ( min( nr(x,n) - v +1 , nr(y,m) ) > min( nr(y,m) - v +1 , nr(x,n) ) )
{
Acp( vx+1 , y , n - v , m );
Acp( x , vy+1 , n - v , m - v );
}
else
{
Acp( vx+1 , y , n - v , m - v );
Acp( x , vy+1 , n , m - v );
}
}
}
int main(void)
{
F>>N>>M;
Acp(1,1,N,M);
for (int i=1;i<=N;++i)
{
for (int j=1;j<=M;++j)
G<<Rez[i][j]<<' ';
G<<'\n';
}
}