Cod sursa(job #1321581)

Utilizator Denisa13Stefan Denisa Denisa13 Data 19 ianuarie 2015 12:56:53
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.41 kb
#include <iostream>
#include <math.h>
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int v[500005],i,j,n,minim[500005],k=0,w[500005],m,poz,part;

int main()
{

    f>>n;
    i=1;
    j=1;
    part=floor(sqrt(n));
    while(i<=n)
    {
        f>>v[i];
        minim[++k]=v[i];
        i++;
        j++;
        while(j<=part && i<=n)
        {
            f>>v[i];
            if(v[i]<minim[k])
                minim[k]=v[i];
            i++;
            j++;
        }
        j=1;
    }
    i=1;
    while(i<=n)
    {
        w[i]=minim[1];
        poz=1;
        for(j=2;j<=k;j++)
            if(minim[j]<w[i])
            {
                w[i]=minim[j];
                poz=j;
            }
        m=INFINITY;
        if(poz!=k)
        {
            for(j=(poz-1)*part+1;j<=poz*part;j++)
                if(w[i]==v[j])
                    {
                        v[j]=INFINITY;
                        break;
                    }
                else if(v[j]<m)
                        m=v[j];
        }
        else
        {
            for(j=(poz-1)*part+1;j<=n;j++)
                if(w[i]==v[j])
                    v[j]=INFINITY;
                else if(v[j]<m)
                        m=v[j];
        }
        minim[poz]=m;
        i++;
    }
    for(i=1;i<=n;i++)
        g<<w[i]<<' ';
    return 0;
}