Pagini recente » Cod sursa (job #1303810) | Cod sursa (job #2233407) | Cod sursa (job #1379107) | Cod sursa (job #1153951) | Cod sursa (job #2605500)
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int n, k, i, j = 1, x, maxi, minj, temp,
v[100005] {}, rez[100005] {}, poz[100005];
freopen("farfurii.in", "r", stdin);
freopen("farfurii.out", "w", stdout);
scanf("%d%d", &n, &k);
for(i = 1; i <= n; ++i) {
rez[i] = i;
poz[i] = i;
}
while(v[j] < k)
v[++j] = v[j-1] + j-1;
k -= v[j-1];
for(i = j-1, x = n; i <= n; ++i, --x) {
rez[i] = x;
poz[x] = i;
}
while(k) {
for(i = 1; i <= n; ++i)
for(j = n; j >= 1; --j)
if(poz[i] < poz[j] && i < j) {
maxi = poz[i];
minj = poz[j];
}
swap(rez[maxi], rez[minj]);
swap(poz[rez[maxi]], poz[rez[minj]]);
--k;
}
for(i = 1; i <= n; ++i)
printf("%d ", rez[i]);
}