█████████ ████ ███░░░░░███ ░░███ ███ ░░░ ██████ ███████ ██████ ██████ ░███ ███░░███ ███░░███ ███░░███ ███░░███ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░███ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ░███ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░

Envío 2551

Problema 0xde - Ordenar un arreglo grande

  • Autor: pipelin1010
  • Fecha: 2021-01-03 08:02:58 UTC (Hace más de 3 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.005 s 2 KBi
#2
Correcto
0.008 s 1 KBi
#3
Correcto
0.006 s 1 KBi
#4
Correcto
0.007 s 2 KBi
#5
Correcto
0.007 s 15 KBi
#6
Correcto
0.007 s 2 KBi
#7
Tiempo límite excedido
1.092 s 13 KBi
#8
Tiempo límite excedido
1.052 s 2 KBi
#9
Tiempo límite excedido
1.056 s 41 KBi
#10
Tiempo límite excedido
1.062 s 2 KBi
#11
Tiempo límite excedido
1.069 s 2 KBi
#12
Tiempo límite excedido
1.066 s 2 KBi
#13
Correcto
0.055 s 2 KBi
#14
Correcto
0.063 s 2 KBi
#15
Correcto
0.067 s 2 KBi
#16
Correcto
0.081 s 3 KBi
#17
Correcto
0.073 s 3 KBi
#18
Correcto
0.055 s 2 KBi
#19
Correcto
0.082 s 14 KBi
#20
Tiempo límite excedido
1.059 s 13 KBi
#21
Correcto
0.071 s 3 KBi
#22
Correcto
0.068 s 2 KBi
#23
Correcto
0.053 s 2 KBi
#24
Correcto
0.065 s 2 KBi
#25
Correcto
0.053 s 15 KBi
#26
Correcto
0.055 s 13 KBi
#27
Correcto
0.055 s 5 KBi
Puntos totales: 75 / 100

Código

//
#include <bits/stdc++.h>
using namespace std;
#define INF 1000000000
#define MOD 1000000007
#define PI 3.14159265
#define EPS 1e-9
#define Pi acos(-1.0)
typedef pair<int, int> ii;
typedef long long ll;
typedef vector<ll> vll;
typedef pair<ll,ll> pll;
#define forr(i,a,b) for(int i=(a); i<(b); i++)
#define clean(arr,val) memset(arr,val,sizeof(arr))
#define forn(i,n) forr(i,0,n)
#define PB push_back
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<pll> vpll;

/*CODE START HERE*/

int n;
vi a;

//Quick sort
void quick(int l, int r){
    // cout << "BEGINNING L " << l << " R " << r << "\n";
    // forn(i,n) cout << a[i] << " ";
    // cout << "\n";
    if(l >= r)
        return;
    int indPivot = (rand()%(r-l+1))+l;
    // cout << "IND PIVOT " << indPivot << "\n";
    swap(a[l],a[indPivot]);
    int pivot = a[l];
    int p = l;
    for(int i = l+1; i <= r; i++){
        if(pivot >= a[i]){
            swap(a[++p],a[i]);
        }
        // forn(i,n) cout << a[i] << " ";
        // cout << "\n";
    }
    // forn(i,n) cout << a[i] << " ";
    // cout << "\n";
    // cout << "P " << p << "\n";
    // p--;
    swap(a[p],a[l]);
    if (l < (p-1))
        quick(l,p-1);
    if ((p+1) < r)
        quick(p+1,r);
}

int main(){
    ios::sync_with_stdio(0);
    cin >> n;
    a.assign(n,0);
    forn(i,n) cin >> a[i];
    quick(0,n-1);
    cout << a[0];
    forr(i,1,n){
        cout << " " << a[i];
    }
    cout << "\n";
    return 0;
}