Cod sursa(job #570802)

Utilizator stay_awake77Cangea Catalina stay_awake77 Data 3 aprilie 2011 16:57:03
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 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( 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("%lld%lld", &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;
}