Cod sursa(job #1028047)

Utilizator tavi.belu1994FMI Belu Andrei Octavian tavi.belu1994 Data 13 noiembrie 2013 16:44:20
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <cstdio>
#include <cmath>

FILE *f,*g;

using namespace std;

int main(){
    f=fopen("date.in","r");
    g=fopen("date.out","w");
    int n,V[50000],A[50000],B[50000],k,p=1,kk=0,min=32000,pp=0;

    fscanf(f,"%d",&n);
    k=sqrt(n);
    for(int i=1;i<=n;i++)
    {
        if(p>k)
        {
            p=1;
            kk++;
            A[kk]=min;
            min=32000;
        }
        fscanf(f,"%d",&V[i]);
        p++;
        if(V[i]<min)
        {
            min=V[i];
        }
    }
    kk++;
    A[kk]=min;

    for(int j=1;j<=n;j++)
    {
        min=32000;
        for(int i=1;i<=kk;i++)
        {
            if(A[i]<min)
            {
                min=A[i];
                p=i;
            }
        }

        pp++;
        B[pp]=min;


        int md,min2=32000;
        md=k*(p-1)+1;

        for(int l=md;l<=md+k-1;l++)
        {
            if(V[l]<min2 && V[l]>min)
            {
                min2=V[l];
            }
            if(V[l]==min)
            {
                V[l]=32000;
            }
        }
        A[p]=min2;
    }

    for(int j=1;j<=n;j++)
    {
        fprintf(g,"%d ",B[j]);
    }

    fclose(f);
    fclose(g);
    return 0;
}