Cod sursa(job #742923)

Utilizator mihai995mihai995 mihai995 Data 2 mai 2012 07:59:20
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;

const int N = 500005, Size = 1 << 16;
int v[N], n;

vector<unsigned short int> upper[Size], lower[Size];

ifstream in("algsort.in");
ofstream out("algsort.out");

void radix(vector<int>& v,int key)
{
    if (!key || v.size() < 2)
        return;

    vector<int> Lista[10];

    for (vector<int> :: iterator it = v.begin() ; it != v.end() ; it++)
        Lista[((*it) / key) % 10].push_back(*it);

    v.clear();

    for (int i = 0 ; i < 10 ; i++)
    {
        radix(Lista[i], key / 10);

        for (vector<int> :: iterator it = Lista[i].begin() ; it != Lista[i].end() ; it++)
            v.push_back(*it);
    }
}

int main()
{
    int n, x;

    in >> n;
    vector<int> v;

    for (int i = 1 ; i <= n ; i++)
    {
        in >> x;
        v.push_back(x);
    }

    radix(v, 1000000000);

    for (vector<int> :: iterator it = v.begin() ; it != v.end() ; it++)
        out << (*it) << " ";

    out << "\n";

    return 0;
}