Cod sursa(job #781257)

Utilizator avramavram andrei marius avram Data 23 august 2012 23:46:45
Problema Piese Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<fstream>
using namespace std;
int i,j,mat[501][501],k,n,m,v[]={0,2,4,8,16,32,64,128,256},p[100][4],q,a,b,mini,l,iu,id,s;
ifstream f("piese.in");
ofstream g("piese.out");
int main()
{
	f>>n>>m;
	i=8;
	a=n;
	b=m;
	while(i>0)
	{
		if(v[i]<=a)
		{
			k=a/v[i];
			a=a-k*v[i];
		}
		if(v[i]<=b)
		{
			q=b/v[i];
			b=b-q*v[i];
		}
		p[i][1]=q*k;
		p[i][2]=q;
		p[i][3]=k;
		i--;
		q=0;
		k=0;
	}
	p[0][1]=m*n;
	for(i=1;i<=10;i++)
	{
		p[0][1]=p[0][1]-(p[i][1]*v[i]*v[i]);
	}
	for(i=0;i<=10;i++)
		mini=mini+p[i][1];
	g<<mini<<"\n";
	s=9;
	for(i=10;i>=1;i--)
	{
		iu=1;
		id=1;
		if(p[i][2]>p[i][3])
		{
		for(l=1;l<=p[i][1];l++)
		{
			for(j=iu;j<=v[i];j++)
			{
				for(q=id;q<=v[i]+id-1;q++)
					mat[j][q]=mini;
			}
			id=q;
			mini--;
		}
		}
		else
		{
			for(l=1;l<=p[i][1];l++)
		{
			for(j=iu;j<=v[i]+iu-1;j++)
			{
				for(q=id;q<=v[i];q++)
					mat[j][q]=mini;
			}
			iu=j;
			mini--;
		}
		}
		
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			if(mat[i][j]==0)
			{
				mat[i][j]=mini;
				mini--;
			}
		}
	}
			
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
			g<<mat[i][j]<<" ";
		g<<"\n";
	}
			
		
	
	return 0;
}