Cod sursa(job #2377249)

Utilizator CezarTDTodirisca Cezar CezarTD Data 9 martie 2019 02:48:18
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.53 kb
#include <bits/stdc++.h>



using namespace std;



const int b=32000;

struct parser{

   char *B,*E,*p;

   parser()

   {

       B=new char[b+10];

       E=B+b;

       Load();

   }

   parser &operator>>(int &x)

   {

       while(*p<'0' || *p>'9')Next();

       x=0;

       while(*p>='0' && *p<='9')

       {

           x=x*10+*p-'0';

           Next();

       }

       return *this;

   }

   void Load()

   {

       p=B;

       memset(B,0,b);

       fread(B,1,b,stdin);

   }

   void Next()

   {

       p++;

       if(p==E)Load();

   }



};



int partitie(int *A,int Start,int End)

{

    int ind=Start+rand()%(End-Start+1);

    swap(A[ind],A[End]);

    int pivot=A[End];

    int pIndex=Start;

    for(int i=Start;i<End;i++)

    {

        if(A[i]<=pivot)

        {

            swap(A[i],A[pIndex]);

            pIndex++;

        }

    }

    swap(A[End],A[pIndex]);

    return pIndex;

}



void quick(int *A,int Start,int End)

{

    if(Start<End)

    {

        int index=partitie(A,Start,End);

        quick(A,Start,index-1);

        quick(A,index+1,End);

    }

}



int main()

{

    freopen("algsort.in","r",stdin);

    freopen("algsort.out","w",stdout);

    parser fin;

    int n,v[500001];

    fin>>n;

    for(int i=1;i<=n;i++)fin>>v[i];

    sort(v+1,v+n+1);

    for(int i=1;i<=n;i++)

    {

        printf("%d ",v[i]);

    }

    return 0;

}