Cod sursa(job #642871)

Utilizator sternvladStern Vlad sternvlad Data 2 decembrie 2011 14:16:29
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

const int N=500001;
int i,n,maxim,minim;
double v[N];
vector <double> b[N];

void citire ()
{
    int x;
    ifstream in ("algsort.in");
    in>>n;
    in>>i;
    v[1]=i;
    maxim=v[1];
    minim=v[1];
    for (i=2;i<=n;i++)
        {
            in>>x;
            v[i]=x;
            if (maxim<v[i]) maxim=v[i];
            if (minim>v[i]) minim=v[i];
    }
    for (i=1;i<=n;i++){
        v[i]=(v[i]-minim)/(maxim-minim+1);
        x=int (n*v[i]);
        b[x].push_back (v[i]);
        }
}

void bucket ()
{int j,k,aux;
    for (i=0;i<n;i++)
    {if (b[i].size()!=0)
    {
        for (j=0;j<b[i].size()-1;j++)
            for (k=j+1;k<b[i].size();k++)
            if (b[i][j]>b[i][k]) {aux=b[i][j];
                                  b[i][j]=b[i][k];
                                  b[i][k]=aux;}
    }
    }
}
void afisare ()
{int j;
double x;
    ofstream out ("algsort.out");
    for (i=0;i<n;i++)
    {if (b[i].size()!=0)
    for (j=0;j<=b[i].size()-1;j++)
    {
            x=b[i][j];
        x=(x*(maxim-minim+1)+minim);
        out<<x<<" ";
    }
    }
}
int main()
{
    citire ();
    bucket ();
    afisare ();
    return 0;
}