Pagini recente » Cod sursa (job #2367050) | Cod sursa (job #2265868) | Cod sursa (job #2688940)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
int v[500005];
int mask[500005];
int digit[10];
int p10=1;
int maxnr;
int maxp10 = 1000000000;
void init_array() {
for (int i=1;i<=n;i++) {
v[i] = mask[i-1];
}
for (int i=0;i<=9;i++) {
digit[i] = 0;
}
}
int main()
{
f >> n;
for (int i=1;i<=n;i++) {
f >> v[i];
maxnr = max(maxnr,v[i]);
}
while (p10!=0 && maxnr/p10!=0) {
for (int i=1;i<=n;i++) {
digit[(v[i]/p10)%10+1]++;
}
for (int i=1;i<=9;i++) {
digit[i] += digit[i-1];
}
for (int i=1;i<=n;i++) {
mask[digit[(v[i]/p10)%10]] = v[i];
digit[(v[i]/p10)%10]++;
}
init_array();
if (p10 == maxp10) {
p10 = 0;
}
else {
p10 *=10;
}
}
for (int i=1;i<=n;i++) {
g << v[i] << " ";
}
return 0;
}