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