Cod sursa(job #659862)

Utilizator mr.johnFMI - Laceanu Ionut-Adrian mr.john Data 11 ianuarie 2012 03:30:06
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <vector>
using namespace std;

int maxim,n;
vector<int> v;
vector<int> bucket[1000];

void radix(){
  int sortat=1;
  int digit=1,m=1,m1=1;
  while (digit<=1000000000){
    for (int i=1;i<=n;i++)
        bucket[(v[i]/digit)%1000].push_back(v[i]);
    int indice=1;
    for (int i=0;i<1000;i++){
      for(vector<int>::iterator it=bucket[i].begin();it!=bucket[i].end();it++)
        v[indice++]=*it;
      bucket[i].clear();
    }
    digit*=1000;
  }
}

int main()
{
  int x;
  freopen("algsort.in","r",stdin);
  freopen("algsort.out","w",stdout);
  maxim=-1;
  scanf("%d",&n);
  v.push_back(1);
  for (int i=1;i<=n;i++){
    scanf("%d",&x);
    v.push_back(x);
    if (x>maxim) maxim=x;
  }
  radix();
  for (int i=1;i<=n;i++)
    printf("%d ",v[i]);
  return 0;
}