Cod sursa(job #518874)

Utilizator blastoiseZ.Z.Daniel blastoise Data 3 ianuarie 2011 13:43:52
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>

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

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

	return 0;
}