Pagini recente » Cod sursa (job #2080048) | Cod sursa (job #22204) | Cod sursa (job #2733148) | Cod sursa (job #3029958) | Cod sursa (job #215766)
Cod sursa(job #215766)
#include <stdio.h>
long long n,k,p,q,i,dif,elem,r;
long long afis[100010];
int main() {
freopen("farfurii.in","r",stdin);
freopen("farfurii.out","w",stdout);
scanf("%lld %lld",&n,&k);
p =0; q = k + 1; elem = n;
while (p + 1 < q) {
r = 1L * (p + q) / 2;
if (1L * r * (r + 1) / 2 <= 1L * k) {
dif = 1L * r * (r + 1) / 2;
p = r;
}
else q = r;
}
dif = k - dif;
for (i = n - p; i <= n - dif; ++i, elem--)
afis[i] = elem;
if (dif) afis[n - p - 1] = elem--;
for (i = n - dif + 1; i <= n; ++i, elem--)
afis[i] = elem;
elem = 1;
for (i = 1; i <= n - p - 2; i++, elem++)
afis[i] = elem;
if (!dif) afis[n - p - 1] = elem++;
for (i = 1; i <= n; i++)
printf("%lld ",afis[i]);
printf("\n");
return 0;
}