Cod sursa(job #1276534)

Utilizator bpalaniciPalanici Bogdan bpalanici Data 26 noiembrie 2014 15:49:24
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <cstdio>
#include <algorithm>
using namespace std;

inline void scanfvect(int  v[500010],int &n)
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&v[i]);
}
inline void printfvect(int v[500010],int n)
{
    for(int i=1;i<=n;i++) printf("%d ",v[i]);
}
int v[500010],n;

inline void divide(int s,int d,int &m1,int &m2)
{
    int is=1,id=0;
    m1=s;m2=d;
    while(s<=d)
    {
        if(v[s]>v[d])
        {
            swap(v[s],v[d]);swap(is,id);
            m1=s;
            m2=d;
        }
        s+=is;
        d-=id;
    }
}

void quicksort(int v[500010],int s,int d)
{
    int m1,m2;
    if(s<=d)
    {
        divide(s,d,m1,m2);
        quicksort(v,s,m2-1);
        quicksort(v,m1+1,d);
    }
}
int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanfvect(v,n);
    quicksort(v,1,n);
    printfvect(v,n);
}