Pagini recente » Cod sursa (job #3314279) | Cod sursa (job #1877596) | Cod sursa (job #988054) | Cod sursa (job #2258470) | Cod sursa (job #3327691)
//https://www.infoarena.ro/problema/algsort
//#pragma GCC optimize("O3")
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("fast-math")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC optimize("inline")
//#define _USE_MATH_DEFINES
//#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <fstream>
//#include <cstdlib>
#include <vector>
//#include <cstring>
//#include <cmath>
//#include <bitset>
//#include <queue>
//#include <stack>
//#include <utility>
#include <algorithm>
//#include <string>
//#include <map>
//#include <unordered_map>
//#include <set>
//#include <unordered_set>
//#include <cstdint>
//#include <climits>
//#include <iomanip>
//#include <cstdio>
//#include <tuple>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int NRMAX = 500000;
constexpr int NRB = (1 << 16);
int v[NRMAX];
vector <int> b[NRB];
int main()
{
int n, i, j, ptr = 0;
fin >> n;
for (i = 0; i < n; ++i)
fin >> v[i];
for (i = 0; i < n; ++i)
{
b[(v[i] >> 15)].push_back(v[i]);
}
for (i = 0; i < NRB; ++i)
{
sort(b[i].begin(), b[i].end());
for (j = 0; j < b[i].size(); ++j)
v[ptr++] = b[i][j];
}
for (i = 0; i < n; ++i)
{
fout << v[i] << " ";
}
return 0;
}