Pagini recente » Cod sursa (job #3154413) | Cod sursa (job #173122) | Cod sursa (job #2922947) | Cod sursa (job #1836484) | Cod sursa (job #2451161)
#include <bits/stdc++.h>
using namespace std;
size_t v[500001], N;
vector<vector<size_t>> buckets(10, vector<size_t>());
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int main()
{
fin >> N;
fin >> v[1];
size_t MAX{v[1]};
for(size_t i = 2; i <= N; i++)
{
fin >> v[i];
MAX = max(MAX, v[i]);
}
size_t nr{0};
while(MAX)
{
nr++;
MAX /= 10;
}
for(size_t c = 0; c < nr; c++)
{
for(size_t i = 1; i <= N; i++)
{
size_t copy_c = c;
size_t copy_v = v[i];
while(copy_c && copy_v){
copy_v /= 10;
copy_c --;
}
buckets[copy_v%10].push_back(v[i]);
}
size_t line = 0;
size_t column = 0;
for(size_t i = 1; i <= N; i++)
{
if(column == buckets[line].size())
{
column = 0;
line++;
while(buckets[line].size() == 0) line++;
}
v[i] = buckets[line][column];
column++;
}
for(size_t i = 0; i < 10; i++) buckets[i].clear();
}
for(size_t i = 1; i <= N; i++) fout << v[i] << " ";
}