Cod sursa(job #643598)

Utilizator sternvladStern Vlad sternvlad Data 3 decembrie 2011 23:21:40
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

void citire ()
{
    int i,y;
    double x;
    ifstream in ("algsort.in");
    in>>n;
    minim=2147483647;
    maxim=0;
    for (i=0;i<n;i++)
        {
            in>>v[i];
            if (v[i]>maxim) maxim=v[i];
            if (v[i]<minim) minim=v[i];
                    }
                     for (i=0;i<n;i++)
        {
            x=(v[i]-minim);
            x=x/(maxim-minim+1);
            y=int (n*x);
            b[y].push_back(x);
        }
}
void sortare ()
{
    int i,j,k;
    double aux;
    for (i=0;i<n;i++)
            if (b[i].size()>=2)
            {
                for (j=0;j<=b[i].size()-2;j++)
                    for (k=j+1;k<=b[i].size()-1;k++)
                        if (b[i][j]>b[i][k]) {    aux=b[i][j];
                                                  b[i][j]=b[i][k];
                                                  b[i][k]=aux;
                                                  }
            }
}
int main()
{
    int i,j;
    double x;
    ofstream out ("algsort.out");
    citire();
    sortare();
    for (i=0;i<n;i++)
        if (b[i].size()>=1)
            for (j=0;j<b[i].size();j++)
                out<<b[i][j]*(maxim-minim+1)+minim<<" ";
    return 0;
}