Cod sursa(job #643991)

Utilizator sternvladStern Vlad sternvlad Data 4 decembrie 2011 23:41:28
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

void citire ()
{
    int i,y;
    double p,x;
    ifstream in ("algsort.in");
    in>>n;
    minim = 1 << 31 - 1;
    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)/(maxim-minim+1);
            y=int (n*x);
            b[y].push_back(x);
            a[y]=1;            }
}

int cmp(double a,double b){
    return a<b;
}
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]) {    b[i][j]=b[i][j]+b[i][k]-(b[i][k]=b[i][j]);
                                                               }
            }*/
            sort(b[i].begin(),b[i].end(),cmp);
            }
}
int main()
{
    int i,j,p;
    double k;
    ofstream out ("algsort.out");
    citire();
    sortare();
    k=0;
    for (i=0;i<n;i++)
        //if (a[n]==1)
            for (j=0;j<b[i].size();j++)
                out<<int(b[i][j]*(maxim-minim+1)+minim)<<" ";
    return 0;
}