Pagini recente » Rating Takacs Ferenc (tferenc) | Profil osiaccr | Profil Bluedrop_demon | Monitorul de evaluare | Cod sursa (job #1305956)
#include <cstdio>
#include <algorithm>
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>
#include <map>
#include <cstring>
#include <string>
#include <set>
#include <stack>
#include <deque>
#define pb push_back
#define mp make_pair
#define f first
#define s second
#define ll long long
using namespace std;
class Container {
vector <int> data;
int N;
void qsort(int left, int right) {
if (left >= right) {
return ;
}
int piv = (left + right) / 2;
int l = left, r = right;
int val = data[piv];
while(l < r) {
while(data[l] < val) {
l += 1;
}
while(data[r] > val) {
r -= 1;
}
if (l < r) {
swap(data[l], data[r]);
}
l += 1; r -= 1;
}
qsort(left, r);
qsort(l, right);
}
public:
Container() {N = 0;}
void add_value(int x) {
data.push_back(x);
N += 1;
}
void sort_container() {
qsort(0, N - 1);
}
friend ostream& operator << (std::ostream &stream, const Container& con) {
for (auto el: con.data) {
stream << el << " ";
}
return stream;
}
};
int main() {
#ifndef ONLINE_JUDGE
ifstream cin("algsort.in");
ofstream cout("algsort.out");
#endif
int N; cin >> N;
Container lil_container;
for (int i = 0; i < N; ++i) {
int x; cin >> x;
lil_container.add_value(x);
}
lil_container.sort_container();
cout << lil_container;
return 0;
}