Cod sursa(job #643996)

Utilizator sternvladStern Vlad sternvlad Data 5 decembrie 2011 00:10:38
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.59 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

const int N=10001;
vector <long double> b[N];
vector <int> t[N];
int v[N],n,minim,maxim,a[N];

void citire ()
{
    int i,y;
    long double p,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++)
        {
            p=(v[i]-minim);
            x=p/(maxim-minim+1);
            y=int (n*x);
            b[y].push_back(x);
            t[y].push_back(i);
            }
}
void sortare ()
{
    int i,j,k;
    long 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;
                                                  aux=t[i][j];
                                                  t[i][j]=t[i][k];
                                                  t[i][k]=aux;
                                                  }
            }
}
int main()
{
    int i,j,p;
    long double k;
    ofstream out ("algsort.out");
    citire();
    sortare();
    k=0;
    for (i=0;i<n;i++)
        if (a[n]=1)
            for (j=0;j<t[i].size();j++)
            cout<<v[t[i][j]]<<" ";
            return 0;
}