Cod sursa(job #1050286)

Utilizator Iustin_BulimarFMI Iustin Bulimar Iustin_Bulimar Data 8 decembrie 2013 14:26:32
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");

const int n_max=500001;
const int mx=(1<<31)-1;

int n, i, v[n_max], m[n_max], p[n_max], l, k, mini, pmini;

void citire()
{
    cin>>n;
    l=sqrt(n);
    k=n/l;
    if(n%l) k++;
    for(i=0; i<k; i++) m[i]=mx;
    mini=mx;
    for(i=0; i<n; i++)
    {
        cin>>v[i];
        if(v[i]<m[i/l])
        {
            m[i/l]=v[i];
            p[i/l]=i;
        }
    }
}

void afis(int mini)
{
    int i;
    for(i=0; i<k; i++)
        if(m[i]<mini)
        {
            mini=m[i];
            pmini=p[i];
        }
    cout<<mini<<" ";
    v[pmini]=mx;
    m[pmini/l]=mx;
    for(i=pmini/l*l; i<pmini/l*l+l; i++)
        if(v[i]<m[i/l])
        {
            m[i/l]=v[i];
            p[i/l]=i;
        }
}

int main()
{
    citire();
    for(i=0; i<n; i++) afis(mini);
    return 0;
}