Cod sursa(job #2763483)

Utilizator ptudortudor P ptudor Data 14 iulie 2021 12:35:53
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 kb

#include <bits/stdc++.h>
#define dbg(x)  #x << "=" << x << " "
#define debug2(x,y)  "{" << x << "," << y << "} "
#define debug_a(a , n) cout << #a << " = "; for (int i =0 ; i < n; i++) cout << a[i] << " "; cout << "\n";
#define debug_m(a , n , m)cout << #a << " = "; for (int i =0 ; i < n; i++) { for (int j = 0; j < m; j++)  cout << a[i][j] << " "; cout << "\n"; } cout << "\n";
using namespace std;


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

int n;
vector<int> a;

int Partition(vector<int> &a , int left ,int right)
///ia elementul din dr, il pune unde trebuie in st
{
    int pivot = a[right];
    int i = left - 1;

    for (int j = left; j <= right - 1; j++) {
        if (a[j] <= pivot)
        {
            i++;
            swap(a[i] , a[j]);
        }
    }
    swap(a[i + 1] , a[right]);
    return i + 1;
}
void quicksort(vector<int> &a, int left , int right)
{
    if (left < right)
    {
        int pivot = Partition(a , left, right);
        quicksort(a , left , pivot - 1);
        quicksort(a , pivot + 1 , right);
    }
}
int main()
{int i;
    in >> n;

    a.resize(n);
    for (i = 0; i < n; i++) {
        in >> a[i];
    }

    srand(time(NULL));
    //cout << rand() << "\n";
    quicksort(a , 0 , a.size() - 1);

    for (i = 0; i < n; i++)
        out << a[i] << " ";
    out << "\n";

}