Cod sursa(job #3327723)

Utilizator horatiu.avramAvram Popa Cristian Horatiu horatiu.avram Data 4 decembrie 2025 22:00:56
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include<vector>
#include<algorithm>
#include<fstream>

using namespace std;

#define MAXN 500000
#define MAXV (1<<31)
#define MAXB (1<<16)
#define MAXNB (1<<15)
#define BITS 15

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int v[MAXN],tmp[MAXN];
int bucket[MAXB];
int pos[MAXB],used[MAXB];

inline int getbucket(int val) {
    return val>>BITS;
}
int main() {
    int n,i,j,k;

    fin>>n;

    for(i=0; i<n; i++) {
        fin>>v[i];
    }
    for (i=0; i<n; i++) {
        bucket[getbucket(v[i])]++;
    }
    for(i=1; i<MAXB; i++) {
        pos[i]=pos[i-1]+bucket[i-1];
    }
    for(int i=0; i<n; i++) {
        int b=getbucket(v[i]);
        tmp[pos[b]+used[b]]=v[i];
        used[b]++;
    }
    for(int i=0; i<n; i++) {
        v[i]=tmp[i];
    }
    k=0;
    for(i=0; i<MAXB; i++) {
        int start=pos[i],finish=pos[i]+bucket[i];
        if(start<finish) {
            sort(v+start,v+finish);
        }
    }

    for (i=0; i<n; i++) {
        fout<<v[i]<<' ';
    }
    return 0;
}