Cod sursa(job #1076655)

Utilizator handz.FMI Andrei Tanasescu handz. Data 10 ianuarie 2014 14:40:24
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.42 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

#define maxN 500005
vector <int> g[10];
int v[maxN];
unsigned n,m,i,j,k;

int main()
{
    int x,ord,maxim,nr;
    in>>n;
    for(i=0; i<n ;i++)
    {
        in>>x;
        v[i]=x;
    }

    maxim=*max_element(v,v+n);
    m=0;
    while(maxim)
    {
        m++;
        maxim=maxim/10;
    }

    ord=1;
    for(k=1; k<=m ;k++)
    {
        for(i=0; i<n ;i++)
        {
            g[v[i]/ord%10].push_back(v[i]);
        }

        nr=0;
        for(i=0; i<=9 ;i++)
        {
            for(j=0; j<g[i].size() ;j++)
             {
                 v[nr]=g[i][j];
                 nr++;
             }
             g[i].clear();
        }
        ord=ord*10;
    }

    for(i=0; i<n ;i++)
        out<<v[i]<<" ";

    return 0;
}

        /*for(i=0; i<=9 ;i++)
        {
            cout<<"\n Galeata "<<i<<": ";
            if(g[i].size())
            {
                for(j=0; j<g[i].size() ;j++)
                {
                    cout<<g[i][j]<<" ";
                }
            }
            else cout<<" nu contine nimic !";
        }*/

/*void print(int pas)
{
    int x;
    cout<<"\n Vectorul la pasul "<<pas<<": ";
    for(i=0; i<n ;i++)
    {
        x=v.at(i);
        cout<<x<<" ";
    }
}*/