Pagini recente » Cod sursa (job #969544) | Cod sursa (job #2593383) | Cod sursa (job #1024965) | Cod sursa (job #1777954) | Cod sursa (job #3134856)
#include <math.h>
#include <stdio.h>
long long R[100005];
int main() {
freopen("farfurii.in", "r", stdin);
freopen("farfurii.out", "w", stdout);
int N, n, i, dif, nums;
long long K, pred, param;
scanf("%d %lld", &N, &K);
param = 8 * K + 1;
nums = sqrt(param);
if (nums * nums != param) {
nums = nums + 1;
}
nums = (nums + 2) / 2;
dif = N - nums;
for (n = nums, i = 0; K > 0; n--, i++) {
R[i] = K;
pred = ((n - 1) * (n - 2)) / 2;
if (K - pred == n - 1) {
K = pred;
} else {
K = pred - (n - 2) + (K - pred);
}
}
R[nums - 1] = 1 + dif;
for (i = nums - 2, n = 1; i >= 0; i--, n++) {
if (R[i] == ((n * (n + 1)) / 2)) {
R[i] = n + 1 + dif;
} else {
R[i] = R[i + 1];
R[i + 1] = n + 1 + dif;
}
}
for (i = 1; i <= dif; i++) {
printf("%d ", i);
}
for (i = 0; i < nums; i++) {
printf("%lld ", R[i]);
}
printf("\n");
return 0;
}