Cod sursa(job #862743)

Utilizator aladinaladin aladinn aladin Data 22 ianuarie 2013 21:39:44
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
const int nmax = 500001;
int v[nmax],n,nr_max=(1<<32)-1;
 
void citire()
{
    ifstream fin ("algsort.in");
    fin>>n;
    for (int i=1;i<=n;++i)
    {
        fin>>v[i];
        if (v[i]>nr_max)
            nr_max=v[i];
    }
    fin.close();
}
 
 
void sortare()
{
    int nr_cifre=0;
    while (nr_max)
    {
        nr_max/=10;
        ++nr_cifre;
    }
     
    int pow10=1;
     
    for (int iter=1;iter<=nr_cifre;++iter) 
    {
        vector <int> buckets[10];
        for (int i=1;i<=n;++i) 
            buckets[(v[i]/pow10)%10].push_back(v[i]);
        int i_v=0;
        for (int it=0;it<=9;++it)
            for (int i2=0;i2<buckets[it].size();++i2)
                v[++i_v]=buckets[it][i2];           
        pow10*=10;
    }
}
 
void scriere ()
{
    ofstream fout ("algsort.out");
    for (int i=1;i<=n;++i)
        fout<<v[i]<<' ';
    fout.close();
}
 
int main ()
{
    citire();
    sortare();
    scriere();
}