Cod sursa(job #2918042)

Utilizator andrei_C1Andrei Chertes andrei_C1 Data 9 august 2022 14:39:50
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>

#pragma GCC optimize("Ofast,unroll-loops")

using namespace std;

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

const int NMAX = 5e5;

int n;
int v[NMAX + 1];

mt19937 rng(time(0));

void funnyStockySort() {
	bool changes = 1;

	shuffle(v + 1, v + n + 1, rng);

	while(changes) {
		changes = 0;
		for(int step = n - 1; step > 0; step >>= 1) {
			for(int i = 1; i + step <= n; i++) {
				if(v[i] > v[i + step]) {
					changes = 1;
					swap(v[i], v[i + step]);
				}
			}
		}
	}
}

int main() {
	ios_base :: sync_with_stdio(0); fin.tie(0); fout.tie(0);
	fin >> n;

	for(int i = 1; i <= n; i++) {
		fin >> v[i];
	}

	funnyStockySort();

	for(int i = 1; i <= n; i++) {
		fout << v[i] << " ";
	}
	return 0;
}