Pagini recente » Cod sursa (job #1948750) | Cod sursa (job #135626) | Cod sursa (job #2407179) | Cod sursa (job #622723) | Cod sursa (job #1480575)
#include <stdio.h>
#define MAX 100005
int n, i, sol[MAX], viz[MAX];
long long k, t;
long long val(int k){
return 1LL * (n - k) * (n - k + 1) / 2;
}
void comp(int k);
int main(){
freopen("farfurii.in", "r", stdin);
freopen("farfurii.out", "w", stdout);
scanf("%d%lld", &n, &k);
for(i = 1; i <= n; i++){
if(i == n){
sol[i] = n;
viz[i] = 1;
continue;
}
t = val(i + 1);
if(t > k){
sol[i] = i;
viz[i] = 1;
}
else{
sol[i] = i + k - t;
viz[i + k - t] = 1;
comp(i + 1);
break;
}
}
for(i = 1; i <= n; i++)
printf("%d ", sol[i]);
return 0;
}
void comp(int k){
int i, v = n;
for(i = k; i <= n; i++){
while(viz[v])
v--;
sol[i] = v;
viz[v] = 1;
}
}