Cod sursa(job #518870)

Utilizator blastoiseZ.Z.Daniel blastoise Data 3 ianuarie 2011 13:38:44
Problema Farfurii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>
#define aux M*(M-1)/2

int N,M,i,x;
long long K;

int BS(int L,int R)
{
	int M=(L+R)/2;
	if(L==R) return R;
	
	if(aux<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%lld",&N,&K);
	M=BS(1,N);

	if(aux==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=aux-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;
}