Cod sursa(job #2677795)

Utilizator 2016Teo@Balan 2016 Data 27 noiembrie 2020 15:29:32
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>
using namespace std;
#define x1 "algsort.in"
#define x2 "algsort.out"
ifstream in(x1);
ofstream out(x2);
#define MAX_N 500000
#define VALUES (1 << 31)
#define BUCKETS (1 << 16)
#define BUCKET (1 << 15)
#define BITI 15
int v1[MAX_N], v2[MAX_N], f[BUCKETS], v3[BUCKETS];
inline int BucketNr(int value) {
    return value >> BITI;
}
int main() {
    int n, i;
    in >> n;
    for(i = 0; i < n; i++)
        in >> v1[i];
    for (i = 0; i < n; ++i)
        ++f[BucketNr(v1[i])];
    for (i = 1; i < BUCKETS; i++)
        v3[i] = v3[i - 1] + f[i - 1];
    for (i = 0; i < n; ++i)
        v2[v3[BucketNr(v1[i])]++] = v1[i];
    sort(v2, v2 + f[0]);
    for (i = 1; i < BUCKETS; i++) {
        f[i] += f[i - 1];
        sort(v2 + f[i - 1], v2 + f[i]);
    }
    for(i = 0; i < n; i++)
        out << v2[i] << " ";
    return 0;
}