Nu aveti permisiuni pentru a descarca fisierul grader_test15.ok
Cod sursa(job #3252615)
| Utilizator | Data | 30 octombrie 2024 12:00:11 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 60 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.91 kb |
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#define MAX 500000
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int32_t n, i, j, a[MAX], random1, pivot;
void Sort(int32_t st, int32_t dr)
{
if(st < dr)
{
srand(time(NULL));
random1 = st+rand()%(dr-st+1);
pivot = a[random1];
swap(a[random1], a[dr]);
i = st-1;
for(j=st; j < dr; j++)
{
if(a[j] < pivot)
{
i++;
swap(a[i], a[j]);
}
}
swap(a[i+1], a[dr]);
Sort(st, i);
Sort(i+2, dr);
}
}
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
srand(time(NULL));
fin >> n;
for(i=0; i < n; i++) fin >> a[i];
Sort(0, n-1);
for(i=0; i < n; i++) fout << a[i] << ' ';
}
