Cod sursa(job #3327691)

Utilizator Cezar2009Cezar Mihai Titihazan Cezar2009 Data 4 decembrie 2025 19:40:04
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 kb
//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;
}