Cod sursa(job #183146)

Utilizator znakeuJurba Andrei znakeu Data 21 aprilie 2008 19:26:41
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
//farfurii v1.3
#include <stdio.h>
#define MAXN 100005

char S[MAXN*8]; int p=0;

inline void add(int x)
{
	char s[8]; int i=0;
	
	while (x)
	{
		s[i++]=x%10+'0';
		x/=10;		
	}
	
	S[p++]=' ';
	for (i=i-1; i>=0; --i, ++p)
		S[p]=s[i];	
}

int main()
{
	freopen("farfurii.in","r",stdin);
	freopen("farfurii.out","w",stdout);
	
	long long n=0,m=0,k=0,i,t;
	
	scanf("%lld%lld",&n,&k); t=2*k;

	for (m=2; m*(m-1)<=t; ++m);
	m--;
	
	if (m*(m-1)==k<<1)
	{
		for (i=1; i<=n-m; ++i)
			add(i);
		for (i=n; i>n-m; --i)
			add(i);
	}
	else
	{
		t= n-( (m+1)*m/2-k );
		for (i=1; i<=n-m-1; ++i)
			add(i);
		add(t);
		for (i=n; i>n-m-1; --i)
			if (i!=t)
				add(i);	
	}
	
	puts(S+1);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}