Cod sursa(job #1053671)

Utilizator albupetruFMI Albu Petru albupetru Data 12 decembrie 2013 21:35:22
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.53 kb
/*#include<fstream>
#include<cstdlib>
using namespace std;

long long n,i,v[200000000];

long partitie(int s,int r, int pivot)
{
 long long pi=v[pivot];
 long long ax;
 ax=v[r];
 v[r]=v[pivot];
 v[pivot]=ax;
 long long t=s;

 for(int i=s;i<r;i++)
{
         if(v[i]<=pi)
         {
          ax=v[i];
          v[i]=v[t];
          v[t]=ax;
          t++;
         }
}
ax=v[r];
v[r]=v[t];
v[t]=ax;

 return t;
}

void qsort(int s, int r)
{
 if(s<r)
        {
         int w=partitie(s,r,s+rand()%(r-s));//std::abs(v[s]%(r-s)));
         qsort(s,w-1);
         qsort(w+1,r);
        }
}

int main()
{
 ifstream f("algsort.in");
 ofstream g("algsort.out");
 f>>n;
 for(i=1;i<=n;i++) f>>v[i];
 f.close();
 qsort(1,n);
 for(i=1;i<=n;i++) g<<v[i]<<" ";
 g.close();
 return 0;
}*/
#include<fstream>
using namespace std;

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

int a[3000001],n,i,k;

void quicksort(int s, int d, int k)
{
    int t;
    int i = s;
    int j = d;
    int p = a[(i+j)/2];

    while (i<j)
    {
        while (a[i]<p)
            i++;
        while (a[j]>p)
            j--;

        if (i<=j)
        {
            t = a[i];
            a[i] = a[j];
            a[j] = t;
            i++; j--;
        }
    }

    if (s<j)
        quicksort(s,j,k);

    if (i<d)
        quicksort(i,d,k);
}

int main()
{
    f>>n;

    for(i=1;i<=n;i++)
        f>>a[i];

    quicksort(1,n,k);

    for(i=1;i<=n;i++)
        g<<a[i]<<" ";

    return 0;
}