Cod sursa(job #2625176)

Utilizator albertyoAlbert Mindrescu albertyo Data 5 iunie 2020 19:35:10
Problema Farfurii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#define N 150005
using namespace std;

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

long long unsigned n, q;
long long unsigned a[N], aux;

int main()
{
    long long i, k;
    fin >> n >> q;

    for (i = 1; i <= n; i++)
        a[i] = i;

    for (k = 1; k <= n; k++)
        if (k * (k - 1) / 2 >= q) break;

    if (k * (k - 1) / 2 == q) {

        for (i = n - k + 1; i <= (n + n - k + 1) / 2; i++) {

            aux = a[i];
            a[i] = a[n - (i - (n - k + 1))];
            a[n - (i - (n - k + 1))] = aux;
        }

        for (i = 1; i <=n; i++)
            fout << a[i] << " ";
    }

    else {

        for (i = n - k + 1; i <= (n + n - k + 1) / 2; i++) {

            aux = a[i];
            a[i] = a[n - (i - (n - k + 1))];
            a[n - ( i - (n - k + 1))] = aux;
        }

        aux = a[n - k + 1 + k * (k - 1) / 2 - q];

        for (i = n - k + 1 + k * (k - 1) / 2 - q; i >= n - k + 2; i--)
            a[i] = a[i - 1];

        a[n - k + 1] = aux;

        for (i = 1; i <= n; i++)
            fout << a[i] << " ";
    }

    return 0;
}