Pagini recente » Cod sursa (job #584443) | Autentificare | Istoria paginii runda/pre_oni_gim2015 | Istoria paginii utilizator/murariulivia | Cod sursa (job #2076444)
#include <iostream>
#include <fstream>
#include <queue>
#include <limits.h>
using namespace std;
queue<int> radix0,radix1,radix2,radix3,radix4,radix5,radix6,radix7,radix8,radix9;
queue<int> vector_sort;
ofstream out("algsort.out");
int main(){
{ifstream in("algsort.in");
int n;
in>>n;
int x;
int maxim=INT_MIN;
for(int i=0;i<n;i++){
in>>x;
vector_sort.push(x);
if(x>maxim)maxim=x;
}
for(int i=1;maxim/i>0;i*=10){
int x;
while(vector_sort.size()){
x=vector_sort.front();
vector_sort.pop();
switch(x){
case 0:radix0.push(x);break;
case 1:radix1.push(x);break;
case 2:radix2.push(x);break;
case 3:radix3.push(x);break;
case 4:radix4.push(x);break;
case 5:radix5.push(x);break;
case 6:radix6.push(x);break;
case 7:radix7.push(x);break;
case 8:radix8.push(x);break;
case 9:radix9.push(x);break;
}
}
for(i=0;i<10;i++){
switch(i){
case 0:{
while(radix0.size()>0){
x=radix0.front();
radix0.pop();
vector_sort.push(x);}break;}
case 1:{
while(radix1.size()>0){
x=radix1.front();
radix1.pop();
vector_sort.push(x);}break;}
case 2:{
while(radix2.size()>0){
x=radix2.front();
radix2.pop();
vector_sort.push(x);}break;}
case 3:{
while(radix3.size()>0){
x=radix3.front();
radix3.pop();
vector_sort.push(x);}break;}
case 4:{
while(radix4.size()>0){
x=radix4.front();
radix4.pop();
vector_sort.push(x);}break;}
case 5:{
while(radix5.size()>0){
x=radix5.front();
radix5.pop();
vector_sort.push(x);}break;}
case 6:{
while(radix6.size()>0){
x=radix6.front();
radix6.pop();
vector_sort.push(x);}break;}
case 7:{
while(radix7.size()>0){
x=radix7.front();
radix7.pop();
vector_sort.push(x);}break;}
case 8:{
while(radix8.size()>0){
x=radix8.front();
radix8.pop();
vector_sort.push(x);}break;}
case 9:{
while(radix9.size()>0){
x=radix9.front();
radix9.pop();
vector_sort.push(x);}break;}
}
}
}
}
while(vector_sort.size()){
int x=vector_sort.front();
out<<x<<' ';
vector_sort.pop();
}
return 0;
}