Cod sursa(job #183154)

Utilizator znakeuJurba Andrei znakeu Data 21 aprilie 2008 19:33:52
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
//farfurii v1.4
#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);
	
	int n=0,m=0,i,t2,cnst;
	long long ml=0,t=0,k=0;
	
	scanf("%d%lld",&n,&k); t=2*k;

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