Cod sursa(job #1018712)

Utilizator bghimisFMI Ghimis Bogdan bghimis Data 29 octombrie 2013 21:51:42
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;

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

int n;

vector <int> v;
vector <int> hashs[200007];

void extract()
{
  int idx = 0;
  for (int i = 0; i < n; i++)
    {
      sort(hashs[i].begin(), hashs[i].end());
      for (vector<int>::iterator it = hashs[i].begin(); it != hashs[i].end(); it++)
	  v[idx++] = *it;
    }
}

void bucketSort ()
{
  for (int i = 0; i < n; ++i)
    {
      int k = floor(v[i] / 3000007);
      hashs[k].push_back(v[i]);
    }

  extract();
}

int main()
{
  cin >> n;
  
  int x;
  for (int i = 0; i < n; ++i)
    {
      cin >> x;
      v.push_back(x);
    }
  
  bucketSort();

  for (int i = 0; i < n; ++i)
    cout << v[i] << " ";
}