Pagini recente » Cod sursa (job #1642354) | Cod sursa (job #567310) | Cod sursa (job #1474674) | Cod sursa (job #2268293) | Cod sursa (job #1786137)
#include <fstream>
#include <queue>
#include <cstdlib>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
queue<int> q[10];
int putere_10(int n)
{
if (n == 0)
return 1;
if (n % 2 == 0)
return putere_10(n / 2) * putere_10(n / 2);
else
return putere_10(n - 1) * 10;
}
int main()
{
int n, *v, maxim = 0;
f >> n;
v = (int*)calloc(n + 1, sizeof(int));
for (int i = 0; i < n; ++i)
{
f >> v[i];
int aux = v[i], nr = 0;
while (aux)
{
++nr;
aux /= 10;
}
if (nr > maxim)
maxim = nr;
}
for (int i = 1; i <= maxim; ++i)
{
int k = putere_10(i);
for (int j = 0; j < n; ++j)
q[v[j] % k / (k / 10)].push(v[j]);
k = 0;
for (int j = 0; j < 10; ++j)
{
while (!q[j].empty())
{
v[k++] = q[j].front();
q[j].pop();
}
}
}
for (int i = 0; i < n; ++i)
g << v[i] << " ";
return 0;
}