Pagini recente » Cod sursa (job #1747180) | Cod sursa (job #324486) | Cod sursa (job #491733) | Cod sursa (job #3168498) | Cod sursa (job #1250073)
// FMI - Grupa 135 - Semigrupa 2 - Hareza Andrei
// Include
#include <fstream>
#include <cstring>
using namespace std;
// Constante
const int sz = 500001;
const int base = 0x100;
const int byte = 0xFF;
// Variabile
ifstream in("algsort.in");
ofstream out("algsort.out");
int num;
int _values[sz], _tempValues[sz];
int *values=_values, *tempValues=_tempValues;
int counter[base];
int pos[base];
// Main
int main()
{
in >> num;
for(int i=1 ; i<=num ; ++i)
in >> values[i];
for(int power=0 ; power!=32 ; power+=8)
{
memset(counter, 0, sizeof(counter));
for(int i=1 ; i<=num ; ++i)
++counter[(values[i]>>power)&byte];
pos[0] = 1;
for(int i=1 ; i<base ; ++i)
pos[i] = pos[i-1] + counter[i-1];
for(int i=1 ; i<=num ; ++i)
tempValues[pos[(values[i]>>power)&byte]++] = values[i];
swap(values, tempValues);
}
for(int i=1 ; i<=num ; ++i)
out << values[i] << ' ';
out << '\n';
in.close();
out.close();
return 0;
}