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