Pagini recente » Cod sursa (job #2647385) | Cod sursa (job #719189) | Cod sursa (job #1198755) | Cod sursa (job #1487277) | Cod sursa (job #2937047)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <map>
#include <unordered_map>
#include <set>
#include <cstring>
#include <chrono>
#include <cassert>
#include <bitset>
#include <stack>
#include <queue>
#include <iomanip>
#include <random>
#include <string>
#ifdef _MSC_VER
# include <intrin.h>
# define __builtin_popcount __popcnt
# define __builtin_popcountll __popcnt64
#endif
#pragma GCC optimize("Ofast")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define x first
#define y second
#define ld long double
#define ll long long
#define ull unsigned long long
#define us unsigned short
#define lsb(x) ((x) & (-(x)))
#define pii pair <int, int>
#define pll pair <ll, ll>
using namespace std;
mt19937_64 gen(time(0));
uniform_int_distribution <int64_t> rng;
const int MOD = 998244353;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n;
int v[500005];
void solve(int test) {
in >> n;
for (int i = 1; i <= n; i++)
in >> v[i];
for (int j = (1 << 18); j >= 1; j >>= 1) {
for (int i = j + 1; i <= n; i++) {
int c = v[i], k;
for (k = i; k > j && v[k - j] > c; k -= j) {
v[k] = v[k - j];
}
v[k] = c;
}
}
for (int i = 1; i <= n; i++)
out << v[i] << " ";
out << "\n";
}
int main() {
srand(time(0));
int T = 1;
//in >> T;
for (int t = 1; t <= T; t++) {
solve(t);
}
return 0;
}