Mai intai trebuie sa te autentifici.
Cod sursa(job #2931129)
| Utilizator | Data | 30 octombrie 2022 16:20:53 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 40 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.88 kb |
#include <bits/stdc++.h>
#define N 500005
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n;
int arr[N];
void read() {
f>>n;
for(int i = 1;i <= n;++i) {
f>>arr[i];
}
}
void swap(int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
int partition(int left, int right) {
int index = left - 1;
int pivot = arr[right];
for(int i = left;i < right;++i) {
if(arr[i] <= pivot) {
index++;
swap(index, i);
}
}
++index;
swap(index, right);
return index;
}
void quickSort(int left, int right) {
if(left < right) {
int p = partition(left, right);
quickSort(left, p - 1);
quickSort(p + 1, right);
}
}
void solve() {
quickSort(1, n);
for(int i = 1;i <= n;++i) {
g<<arr[i]<<" ";
}
}
int main() {
read();
solve();
return 0;
}
