Cod sursa(job #2784923)

Utilizator Andrei_TudorAndrei Tudor Andrei_Tudor Data 17 octombrie 2021 18:19:08
Problema Farfurii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
using namespace std;
ifstream cin("farfurii.in");
ofstream cout("farfurii.out");
int main () {
    long long n, k, m = 0;
    cin >> n >> k;
    while (m * (m + 1) / 2 <= k) {
        m ++;
    }
    m --;
    if (k - m * (m + 1) / 2 == 0) {
        for (int i = 1; i <= n - m - 1; i ++) {
            cout << i << " ";
        }
        for (int i = n; i >= n - m; i --) {
            cout << i << " ";
        }
    }
    else {
        bool ok = 0;
        long long r = k - m * (m + 1) / 2;
        for (int i = 1; i <= min(n - m, n - m - r) - 1; i ++) {
            cout << i << " ";
        }
        if (min(n - m - 1, n - m - r - 1) == n - m - r - 1) {
            cout << n << " ";
            ok = 1;
        }
        for (int i = min(n - m, n - m - r); i <= n - m - 1; i ++) {
            if (i == n - m - r && ok != 1) {
                cout << n << " ";
            }
            cout << i << " ";
        }
        for (int i = n - 1; i >= n - m; i --) {
            cout << i << " ";
        }
    }
    return 0;
}