Cod sursa(job #700786)

Utilizator gabrielvGabriel Vanca gabrielv Data 1 martie 2012 11:57:19
Problema Tablete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
using namespace std;
#include<cstdio>
#define MAX 305
int a[MAX][MAX];
int main()
{
	freopen("placare.in","r",stdin);
	freopen("placare.out","w",stdout);
	int n,m,i,j,ok,x,y,w;
	scanf("%d %d",&n,&m); 
	ok=n*m;
	x=1;y=1;
	while(ok)
	{
		scanf("%d",&w);
		if(w==1)
		{
			a[x][y]=1;
			a[x][0]++;
			a[0][y]++;
			y++;
			ok--;
		}
		else
			if(w>1) // completare pe lungime
			{
				for(j=y;j<=y+w-1;j++)
				{
					a[x][j]=w;
					a[0][j]++;
				}
				a[i][0]=a[1][0]+w;
				y=y+w;
				ok=ok-w;
			}
			else
				if(w<0) // completare pe inaltime
				{
					for(i=x;i<=x-w-1;i++)
					{
						a[i][y]=-w;
						a[i][0]++;
					}
					a[0][y]=a[0][y]-w;
					y++;
					ok=ok+w;
				}
		if(y==m+1)
			do
			{
				x++;
				if(a[x][0]<m)
					y=a[x][0]+1;
				else
					y=1;
			}while(a[x][y]);
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
			printf("%d ",a[i][j]);
		printf("\n");
	}
	return 0;
}