Cod sursa(job #2973969)

Utilizator matthriscuMatt . matthriscu Data 2 februarie 2023 21:03:10
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;

int partition(vector<int>& v, int left, int right) {
	cout << "p " << left << ' ' << right << '\n';
	if (left >= right)
		return left;

	int index = left;

	for (int i = left; i < right; ++i)
		if (v[i] <= v[right])
			swap(v[index++], v[i]);

	swap(v[index], v[right]);

	return index;
}

void quicksort(vector<int>& v, int left, int right) {
	if (left >= right)
		return;
	
	cout << "q " << left << ' ' << right << '\n';

	int index = partition(v, left, right);

	quicksort(v, left, index - 1);
	quicksort(v, index + 1, right);
}

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

	int n;

	fin >> n;

	vector<int> v(n);

	for (int &x : v)
		fin >> x;

	quicksort(v, 0, n - 1);

	for (int &x : v)
		fout << x << ' ';
	fout << '\n';
}