Cod sursa(job #2829370)

Utilizator lolismekAlex Jerpelea lolismek Data 8 ianuarie 2022 16:00:33
Problema Farfurii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>

#define int long long

using namespace std;

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

const int N = 1e5 + 1;
int v[N];

signed main(){
    int n, k;
    fin >> n >> k;
    int folosite = 0;
    for(int i = 1; i <= n; i++){
        if(i * (i - 1) / 2 <= k && k <= (i + 1) * i / 2){
            folosite = i + 1;
            break;
        }
    }
    for(int i = 1; i <= n - folosite; i++) v[i] = i;
    for(int i = n - folosite + 1; i <= n; i++) v[i] = n - (i - n + folosite) + 1;
    //swap(v[n - folosite + 1], v[n - folosite + 1 + (folosite * (folosite - 1) / 2 - k)]);
    for(int i = 1; i <= n - folosite; i++) fout << v[i] << ' ';
    fout << v[n - folosite + 1 + (folosite * (folosite - 1) / 2 - k)] << ' ';
    int afisare = n;
    for(int i = n - folosite + 2; i <= n; i++){
        if(afisare == v[n - folosite + 1 + (folosite * (folosite - 1) / 2 - k)]) afisare--;
        fout << afisare << ' ';
        afisare--;
    }
    return 0;
}