Cod sursa(job #518864)

Utilizator blastoiseZ.Z.Daniel blastoise Data 3 ianuarie 2011 13:33:21
Problema Farfurii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <stdio.h>

int N,M,K,x,i;

int BS(int L,int R)
{
	int M=(L+R)/2;
	if(L==R) return R;
	
	if((M*(M-1))/2<K) return BS(M+1,R);
	else return BS(L,M);
}

int main()
{
	freopen("farfurii.in","r",stdin);
	freopen("farfurii.out","w",stdout);

	scanf("%d%d",&N,&K);
	M=BS(1,N);

	if((M*(M-1))/2==K)
	{
		for(i=1;i<=N-M;i++)
			printf("%d ",i);
		for(i=0;i<M;i++)
			printf("%d ",N-i);
		printf("\n");
	}
	else
	{
		x=(M*(M-1))/2-K;
		for(i=1;i<=N-M;i++)
			printf("%d ",i);
		printf("%d ",N-x);
		for(i=0;i<M;i++)
			if(i!=x) printf("%d ",N-i);
		printf("\n");
	}

	return 0;
}