Pagini recente » Cod sursa (job #2602488) | Monitorul de evaluare | Profil Ionutz_Lala | Profil luca.prunoiu | Cod sursa (job #862743)
Cod sursa(job #862743)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
const int nmax = 500001;
int v[nmax],n,nr_max=(1<<32)-1;
void citire()
{
ifstream fin ("algsort.in");
fin>>n;
for (int i=1;i<=n;++i)
{
fin>>v[i];
if (v[i]>nr_max)
nr_max=v[i];
}
fin.close();
}
void sortare()
{
int nr_cifre=0;
while (nr_max)
{
nr_max/=10;
++nr_cifre;
}
int pow10=1;
for (int iter=1;iter<=nr_cifre;++iter)
{
vector <int> buckets[10];
for (int i=1;i<=n;++i)
buckets[(v[i]/pow10)%10].push_back(v[i]);
int i_v=0;
for (int it=0;it<=9;++it)
for (int i2=0;i2<buckets[it].size();++i2)
v[++i_v]=buckets[it][i2];
pow10*=10;
}
}
void scriere ()
{
ofstream fout ("algsort.out");
for (int i=1;i<=n;++i)
fout<<v[i]<<' ';
fout.close();
}
int main ()
{
citire();
sortare();
scriere();
}