Cod sursa(job #570798)

Utilizator stay_awake77Cangea Catalina stay_awake77 Data 3 aprilie 2011 16:55:06
Problema Farfurii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>

long long N, K, Nr, i;

long long BS()
{
	long long st = 1, dr = N;

	while( st <= dr )
	{
		long long m = (st+dr)/2;

		if( (long long)( m*(m-1)/2 ) <= K ) st = m+1;
		else dr = m-1;
	}

	return st;
}

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

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

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

	printf("\n");

	return 0;
}