Cod sursa(job #312776)

Utilizator zalmanDanci Emanuel Sebastian zalman Data 6 mai 2009 23:09:18
Problema Farfurii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#include <algorithm>

using namespace std;

long n, k, i, m, p;

int main(void)
{
	freopen("farfurii.in", "r", stdin);
	freopen("farfurii.out", "w", stdout);
	scanf("%ld %ld", &n, &k);
	for(p = 1; p < n; p *= 2);
	for(m = 0; p > 0; p/=2)
		if((m + p <= n) && ((m + p) * (m + p-1) <= 2*k))
			m += p;
	k -= m*(m-1)/2;
	if(!k)
	{
		for(i = 1; i <= n - m; ++i)
			printf("%ld ", i);
		for(i = n; i > n - m; --i)
			printf("%ld ", i);
		printf("\n");
	}
	else
	{
		k = m - k;
		m++;
		for(i = 1; i <= n - m; ++i)
			printf("%ld", i);
		printf("%ld", n-k);
		for(i = n; i > n - k; --i)
			printf("%ld ", i);
		for(i = n - k - 1; i > n - m; i--)
			printf("%ld ", i);
		printf("\n");
	}
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}