Pagini recente » Cod sursa (job #353652) | Cod sursa (job #1401263) | Cod sursa (job #2826285) | algoritmiada-2019/runda-maraton/solutii/niciomare | Cod sursa (job #1077025)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
long long N;
long long M;
void solve(int N, int M);
int main() {
freopen("farfurii.in","r",stdin) ;
freopen("farfurii.out","w",stdout) ;
scanf("%lld %lld", &N, &M);
//while (N != -1 && M != -1) {
solve(N, M);
// scanf("%d %d", &N, &M);
//}
//while (1);
return 0;
}
void solve(int N, int M) {
long long i, nr = 0, pos, z;
vector <int> V;
V.resize(N + 1);
for (i = 1; i <= N; ++i) {
V[i] = i;
}
if (M >= 1) {
pos = N;
for (i = 2; i <= N; ++i) {
nr += i - 1;
--pos;
if (nr >= M) break;
}
if (pos == 1) {
reverse(V.begin() + 1, V.end());
pos = nr - M + 1;
for (i = pos; i > 1; --i) {
swap(V[i], V[i - 1]);
}
}
else {
reverse(V.begin() + pos, V.end());
i = pos + (nr - M);
while (i > pos) {
swap(V[i], V[i - 1]);
--i;
--nr;
}
}
}
printf("%d", V[1]);
for (i = 2; i <= N; ++i) {
printf(" %d", V[i]);
}
printf("\n");
}