Pagini recente » Cod sursa (job #1942552) | Cod sursa (job #2416317) | Cod sursa (job #1299884) | Cod sursa (job #1440681) | Cod sursa (job #481396)
Cod sursa(job #481396)
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int NMAX = 100005;
int N, K, M;
int perm[NMAX];
void citire()
{
cin >> N >> K;
}
void afla_m()
{
while(1)
{
if(M * (M - 1) / 2 >= K)
return;
M++;
}
}
void rearanjeaza()
{
for(int i = 1 ; i <= N ; i++)
perm[i] = i;
int inc = N - M + 1, sfa = N;
while(inc < sfa)
{
swap(perm[inc], perm[sfa]);
inc++;sfa--;
}
int dif = (M * (M - 1) / 2) - K, prov = perm[N - M + 1];
for(int i = N - M + 2 ; i <= N - M + 1 + dif ; i++)
swap(prov, perm[i]);
perm[N - M + 1] = prov;
}
void scrie()
{
for(int i = 1 ; i <= N ; i++)
printf("%d ", perm[i]);
}
int main()
{
freopen("farfurii.in", "r", stdin);
freopen("farfurii.out", "w", stdout);
citire();
afla_m();
rearanjeaza();
scrie();
return 0;
}