Pagini recente » Cod sursa (job #714705) | Cod sursa (job #1873698) | Cod sursa (job #1432598) | Cod sursa (job #376320) | Cod sursa (job #3223783)
#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 = 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;
}