Mai intai trebuie sa te autentifici.

Cod sursa(job #1018545)

Utilizator bghimisFMI Ghimis Bogdan bghimis Data 29 octombrie 2013 18:43:20
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream cin("algsort.in");
ofstream cout("algsort.out");

int n, v[500000];

void swap( int &a, int &b ) {
    int aux = a;
    a = b;
    b = aux;
}
  
void qsort( int left, int right ) {
    if ( left >= right )
        return;
  
    int piv = v[left + rand() % ( right - left + 1 )], begin = left, end = right;
  
    while ( begin <= end ) {
        while ( v[begin] < piv )
            ++begin;
        while ( v[end] > piv )
            --end;
  
        if ( begin <= end ) {
            swap( v[begin], v[end] );
            ++begin;
            --end;
        }
    }
  
    qsort( left, end );
    qsort( begin, right );
}
  

int main()
{    
  int n; cin >> n;

  for(int i = 0; i < n; i++)
    cin >> v[i];

  qsort(v);
    
  cin.close();
  cout.close();

  return 0;
}