Cod sursa(job #1618828)

Utilizator EpictetStamatin Cristian Epictet Data 28 februarie 2016 00:29:11
Problema Farfurii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;

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

long long k;
int n, sol1, sol2, sol3, poz, V[100010], Sol[100010];

int main()
{
    fin >> n >> k;
    for (long long i = 1; i <= n; i ++)
    {
        if ((i * (i - 1) / 2) > k)
        {
            sol1 = i - 1;
            break;
        }
    }

    poz = n - sol1 + 1;
    Sol[poz] = n;

    sol2 = k - (sol1 * (sol1 - 1) / 2) + (poz - 1);
    Sol[poz - 1] = sol2;


    for (int i = 1; i <= poz - 2; i ++) Sol[i] = i;
    int sol3 = n - 1;
    for (int i = poz + 1; i <= n; i ++)
    {
        if (sol3 == sol2) sol3 --;
        Sol[i] = sol3;
        sol3 --;
    }

    for (int i = 1; i <= n; i ++) fout << Sol[i] << ' ';
    fout << '\n';
    fout.close();
    return 0;
}