Pagini recente » Monitorul de evaluare | Cod sursa (job #2617311)
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
int n, k, v[100002], p, x, m, d, i;
int main()
{
freopen("farfurii.in", "r", stdin);
freopen("farfurii.out", "w", stdout);
scanf("%d%d", &n, &k);
x = ((-1 + sqrt(1 + 8 * k)) / 2);
m = n - (x + 1);
for(i = 1; i < m; i++) {
v[i] = i;
}
p = n;
v[m] = 0;
for(i = m + 1; i <= n + 1; i++) {
v[i] = p--;
}
d = (k - (x * (x + 1)) / 2);
if(k > 0) {
v[m] = v[n-d+1];
for(i=1;i<n-d+1;i++)
printf("%ld ", v[i]);
for(i=n-d+2;i<=n+1;i++)
printf("%ld ", v[i]);
}else {
for(i=1;i<m;i++)
printf("%ld ", v[i]);
for(i=m+1;i<=n+1;i++)
printf("%ld ", v[i]);
}
return 0;
}