Mai intai trebuie sa te autentifici.
Cod sursa(job #1109871)
| Utilizator | Data | 17 februarie 2014 17:50:48 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.9 kb |
#include <cstdio>
#include <algorithm>
#define NMAX 500005
#define pii pair <int, int>
#define x first
#define y second
#define ll long long
#define LMAX 10
#define pb push_back
using namespace std;
int n, a, b, c, A[NMAX], P[NMAX];
vector <int> pos[LMAX];
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &A[i]), P[i] = i;
for (int i = 1, curr = 1; i < LMAX; i++, curr *= 10)
{
for (int j = 0; j < LMAX; j++)
pos[j].clear();
for (int j = 1; j <= n; j++)
pos[(A[P[j]] / curr) % 10].pb(P[j]);
for (int j = 0, r = 0; j < LMAX; j++)
for (int k = 0; k < (int)pos[j].size(); k++)
P[++r] = pos[j][k];
}
for (int i = 1; i <= n; i++)
printf("%d ", A[P[i]]);
printf("\n");
return 0;
}
