Cod sursa(job #323875)

Utilizator ooctavTuchila Octavian ooctav Data 13 iunie 2009 22:33:45
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
// piese.cpp : Defines the entry point for the console application.
//

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;

int n,m,a,ture=1;
int e[501][501];
int po[10],p,c=0,fam=0,p2;
void put()
{
	po[0]=1;
	for(int i=1;i<=9;i++)
		po[i]=2*po[i-1];
}
int main()
{
	int d=0,j;
	freopen("piese.in","r",stdin);
	freopen("piese.out","w",stdout);
	cin>>m>>n;
	a=min(n,m);
	put();
	while(c<n)
	{
		for(int i=0;i<=9;i++)
			if(po[i]<=a)
				p=po[i];
			else
				break;

		fam=p;
		d=0;
		while(d<m)
		{
			for(int i=d+1;i<=d+p;i++)
			{
				j=c;
				while(j<c+fam)
					if(i==d+1)
					{
						e[i][++j]=ture;
						if(j%p==0)
							ture++;
					}
					else
						e[i][++j]=e[i-1][j];
			}
			d=d+p;
			while(p>m-d)
				p=p>>1;
		}
		c=c+fam;
		a=min(n-c,m);
	}

	ture--;

	printf("%d\n",ture);
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
			printf("%d ",e[i][j]);
		printf("\n");
	}

	return 0;
}