Cod sursa(job #1317629)

Utilizator alinmocanu95FMI Alin Mocanu alinmocanu95 Data 15 ianuarie 2015 00:49:49
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<iostream>
#include <math.h>
#include <fstream>
#define nmax 500000

using namespace std;

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

int a[nmax], v[nmax], b[800];
int n,w,m,r;
int minim(int u)
{
    int poz=u*m+1;
    int o=a[u*m+1];
    int j=u*m+2;

        while(j<=(u+1)*m && j<=n)
            {if(o>a[j])
                {o=a[j]; poz=j;}
            j++;}
    a[poz]=INFINITY;
    return o;
}

int main()
{
   r=0;
    f>>n;
    int i;
    for(i=1;i<=n;i++)
        f>>a[i];
    m=sqrt(n);
    w=m;
    while(w*m<n)
        w++;
    for (i=0;i<w;i++)
        b[i]=minim(i);

    for (i=1;i<=n;i++)
        {int p=0;
        int o=b[0];

        for (int j=1;j<w;j++)
            if(o>b[j])
                {o=b[j]; p=j;}
        v[r]=o;r++;
        b[p]=minim(p);}

    for (i=0;i<n;i++)
        g<<v[i]<<' ';

    f.close();
    g.close();
    return 0;
}