Cod sursa(job #1626256)

Utilizator qwertyuiTudor-Stefan Berbinschi qwertyui Data 3 martie 2016 00:00:41
Problema Farfurii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fin ("farfurii.in");
ofstream fout ("farfurii.out");

int N, K;

int main()
{
    fin >>N >>K;

    int m = 0, p = 0;


	for (; (1<<p) < N; ++p);

	for (; p >= 0; p--)
		if ((m + (1<<p) <= N) && ((m + (1<<p))*(m + (1<<p) - 1) <= 2*K))
			m+=(1<<p);

	K -= m*(m-1)/2;

    if (!K)
	{
		for (int i = 1; i <= N-m; ++i)
			fout <<i <<' ';
		for (int i = N; i > N-m; --i)
			fout <<i <<' ';
        fout <<'\n';
	}
	else
	{
        K = m - K;
        ++m;

        for (int i = 1; i <= N-m; ++i)
			fout <<i <<' ';

		fout <<N-K <<' ';

		for (int i = N; i > N-K; --i)
			fout <<i <<' ';

        for (int i = N - K - 1; i > N-m; --i)
			fout <<i <<' ';

		fout <<'\n';
	}

    return 0;

}