Cod sursa(job #2076053)

Utilizator anca.sotirAnca Sotir anca.sotir Data 26 noiembrie 2017 01:10:22
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
#include <limits.h>
#include <math.h>
#define nmax 500002
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long long int n,v[nmax],minv[nmax];
int main()
{
    f>>n;
    int rad=sqrt(n);
    for(int i=1; i<=rad+1; ++i)
        minv[i]=INT_MAX;
    for(int i=1; i<=n; ++i)
    {
        long long int aux=(i-1)/rad+1;
        f>>v[i];
        if(v[i]<minv[aux])
            minv[aux]=v[i];
    }

    for(int k=1; k<=n; ++k)
    {
        long long int minim=minv[1],min_int=1;
        for(int i=2; i<=rad+1; ++i)
        {
            if(minv[i]<minim)
            {
                minim=minv[i];
                min_int=i;
            }
        }
        g<<minim<<' ';
        int amScos=0;
        long long int aux_minim=INT_MAX;
        for(int i=(min_int-1)*rad+1; i<=min_int*rad; ++i)
        {
            if(v[i]==minim && amScos==0)
            {
                v[i]=INT_MAX;
                amScos=1;
            }
            if(v[i]<aux_minim)
                aux_minim=v[i];
        }
        minv[min_int]=aux_minim;
    }
    return 0;
}