Pagini recente » Rezultatele filtrării | Rezultatele filtrării | Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #128070)
Cod sursa(job #128070)
#include <stdio.h>
#define NMax 500
int n, m, mmin=1;
int a[NMax][NMax];
FILE *f, *g;
void mat( int x1, int y1, int x2, int y2 )
{
int min, pow, i, j;
min = (x2-x1+1);
if ( (y2-y1+1) < min )
min = (y2-y1+1);
if ( x1 >= n || y1 >= m )
return;
for ( pow = 1; pow <= min; pow = pow<<1 );
pow = pow >> 1;
if ( pow < 1 )
return;
for (i=x1; i<=x1+pow-1; i++)
for (j=y1; j<=y1+pow-1; j++)
a[i][j] = mmin;
mmin++;
mat(x1, y1+pow, x1+pow-1, y2);
mat(x1+pow, y1, x2, y2);
}
int main()
{
int i, j;
f = fopen( "piese.in", "rt" );
g = fopen( "piese.out", "wt" );
fscanf( f, "%d %d", &n, &m );
mat( 0, 0, n-1, m-1 );
fprintf( g, "%d\n", mmin-1 );
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
fprintf(g, "%d", a[i][j]);
fprintf(g, "\n");
}
return 0;
}