Pagini recente » Cod sursa (job #1520325) | Cod sursa (job #1043008) | Cod sursa (job #1879919) | Cod sursa (job #1073604) | Cod sursa (job #2556468)
#include<bits/stdc++.h>
#define N 500030
#define int long long
using namespace std;
int a[N], n;
void countSort(int x) {
vector<int> cnt[10];
for (int i=0; i<n; i++) {
int idx = (a[i]/x)%10;
cnt[idx].push_back(a[i]);
}
int k=0;
for (int i=0; i<10; i++) {
for (auto it:cnt[i]) {
a[k++]=it;
}
}
}
void radixSort(int n, int a[N]) {
int mx=a[0];
for (int i=1; i<n; i++) if (a[i]>mx) mx=a[i];
for (int x=1; mx/x; x*=10) {
countSort(x);
}
}
int32_t main() {
ifstream cin("algsort.in");
ofstream cout("algsort.out");
cin>>n;
for (int i=0; i<n; i++) cin>>a[i];
radixSort(n,a);
for (int i=0; i<n; i++) cout<<a[i]<<" ";
return 0;
}