Cod sursa(job #1618796)

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

using namespace std;

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

long long k;
int n, sol1, sol2, sol3,  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;
        }
    }

    Sol[sol1] = n;
    sol2 = (k - (sol1 * (sol1 - 1)) / 2) + (sol1 - 1);
    Sol[sol1 - 1] = sol2;
    for (int i = 1; i <= sol1 - 2; i ++) Sol[i] = i;
    int sol3 = n - 1;
    for (int i = sol1 + 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;
}