Cod sursa(job #804413)

Utilizator cahemanCasian Patrascanu caheman Data 29 octombrie 2012 19:18:54
Problema Semne Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>
long mat[20][20];
int main()
{
	freopen("triunghi.in","r",stdin);
	freopen("triunghi.out","w",stdout);
	long n,s,i,j,a,b,x=0;
	scanf("%ld%ld",&n,&s);
	for(i=1;i<=(n+1)/2;i++)
		x+=i;
	x+=(i-1)*(n/2);
	s=s-(n-2)*x-n-n;
	for(i=1;;i++)
	{
		if(s<n+n-2)
		{
			printf("imposibil\n");
			return 0;
		}
		s=s-x;
		if(s%n==0)
			break;
	}
	a=1+i;
	b=s/n+1;
	mat[1][1]=b;
	for(i=2;i<=n;i++)
		mat[1][i]=1;
	mat[1][(n+1)/2]=a;
	for(i=2;i<=n;i++)
		for(j=1;j<=n-i+1;j++)
			mat[i][j]=mat[i-1][j]+mat[i-1][j+1];
	for(i=n;i>=1;i--)
	{
		for(j=1;j<n-i+1;j++)
			printf("%ld ",mat[i][j]);
		printf("%ld",mat[i][j]);
		if(i>1)
			printf("\n");
	}
	return 0;
}