Cod sursa(job #1275512)

Utilizator sherban26FMI Mateescu Serban-Corneliu sherban26 Data 25 noiembrie 2014 12:11:20
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <iostream>
#include <fstream>
#include <math.h>

#define MAXED 99999999

using namespace std;

ifstream fin ("algsort.in");
ofstream fout ("algsort.out");

int v[1610], smen[410];

int main()
{
    int n, rad, i;

    fin >> n;
    rad = ceil(sqrt(n));
    for (int i = 0; i < n; fin >> v[i++]);

//smen the min out
    for (i = 0; i < rad; i++)
    {
        smen[i] = v[i * rad];
        for (int j = 1; j < rad; j++)
            if (i * rad + j < n && smen[i] > v[i * rad + j]) smen[i] = v[i * rad + j];
    }

//sort
    int m, ind;
    for (int k = 0; k < n; k++)
    {
        ind = 0;
        m = smen[0];
        for (i = 1; i < rad; i++)
        {
            if (smen[i] < m)
            {
                ind = i;
                m = smen[i];
            }
        }

        fout << m << " ";

        for (i = rad * ind; i < rad * (ind + 1); i++)
        {
            if (i < n && m == v[i])
            {
                v[i] = MAXED;
                break;
            }
        }

        m = MAXED;
        for (i = rad * ind; i < rad * (ind + 1); i++)
        {
            if (i < n && v[i] <= m)
                m = v[i];
        }
        smen[ind] = m;
    }

    return 0;
}