Cod sursa(job #3223785)

Utilizator catalinmarincatalinmarin catalinmarin Data 13 aprilie 2024 16:18:19
Problema Farfurii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
using namespace std;
ifstream fin("farfurii.in");
ofstream fout("farfurii.out");
int main(){
    int v[int(1e5) + 5] = {0};
    long long n, k;
    fin >> n >> k;
    long long poz = 0;
    long long nr_inversiuni;
    for (int m = 1; m <= n; m++){
        long long nr = 1LL * m * (m - 1) / 2;
        if (nr == k || nr > k){
            poz = m;
            break;
        }
    }
    nr_inversiuni = poz * (poz - 1) / 2;
    for (int i = 1; i <= n - poz; i++){
        v[i] = i;
    }
    int start_descresc = n - poz + 1;
    if (nr_inversiuni > k){
        int diferenta = nr_inversiuni - k;
        v[start_descresc] = n - diferenta;
        start_descresc++;
        int val = n;
        for (int i = start_descresc; i <= n; i++){
            if (val == n - diferenta){
                val--;
            }
            v[i] = val;
            val--;
        }
    } else if (nr_inversiuni == k){
        int val = n;
        for (int i = start_descresc; i <= n; i++){
            v[i] = val;
            val--;
        }
    }
    for (int i = 1; i <= n; i++){
        fout << v[i] << " ";
    }
    return 0;
}