Pagini recente » Diferente pentru clasament-arhiva-educationala intre reviziile 6 si 5 | Cod sursa (job #1994969) | Cod sursa (job #2001051) | Cod sursa (job #427068) | Cod sursa (job #1403791)
#include <iostream>
#include <fstream>
using namespace std;
ofstream out("algsort.out");
const int N = 500001, B = 10;
int n, v[N], aux[N], poz[B];
void citire()
{
ifstream in("algsort.in");
in >> n;
for (int i = 1; i <= n; i++)
in >> v[i];
}
void afisare()
{
for (int i = 1; i < n; i++)
out << v[i] << " ";
out << v[n] << "\n";
}
void rdxs()
{
int i, j, k, p10 = 1, c;
for (i = 0; i < B; i++)
{
for (j = 1; j <= n; j++)
poz[v[j]/p10%10]++;
for (k = 1; k < B; k++)
poz[k] += poz[k-1];
for (j = n; j >= 1; j--)
{
c = v[j]/p10%10;
aux[poz[c]--] = v[j];
}
for (j = 1; j <= n; j++)
v[j] = aux[j];
p10 *= 10;
}
}
int main()
{
//cout << "Hello world!" << endl;
citire();
rdxs();
afisare();
return 0;
}