Nu aveti permisiuni pentru a descarca fisierul grader_test2.in
Cod sursa(job #2434619)
| Utilizator | Data | 2 iulie 2019 12:49:59 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.82 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int N = 500010;
int n, v[N];
void quick_sort(int, int);
int main()
{
srand(time(0));
f >> n;
for(int i = 1; i <= n; i++)
f >> v[i];
quick_sort(1, n);
for(int i = 1; i <= n; i++)
g << v[i] << ' ';
return 0;
}
void quick_sort(int left, int right)
{
if(left>=right)return;
int mi = left+rand()%(right-left+1), st = left, dr = right;
int pivot = v[mi];
do
{
while(v[st] < pivot)
st++;
while(v[dr] > pivot)
dr--;
if(st <= dr)
{
swap(v[st], v[dr]);
st++;
dr--;
}
}
while(st <= dr);
quick_sort(left, dr);
quick_sort(st, right);
}
