Cod sursa(job #3237589)

Utilizator tsg38Tsg Tsg tsg38 Data 10 iulie 2024 13:03:48
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

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

const int DIM = 5e5 + 1;

int v[DIM], aux[DIM];

void mergesort( int l, int r ) {
  if ( l == r ) return;
  if ( l + 1 == r ) {
	if ( v[l] > v[r] ) swap(v[l], v[r]);
	return;
  }
  int mid = (l + r) / 2;
  mergesort(l, mid);
  mergesort(mid + 1, r);
  int i = l, j = mid + 1, p = l;
  while ( i <= mid && j <= r ) {
	if ( v[i] < v[j] ) {
	  aux[p++] = v[i++];
	} else {
	  aux[p++] = v[j++];
	}
  }
  while ( i <= mid ) aux[p++] = v[i++];
  while ( j <= r ) aux[p++] = v[j++];
  for ( int i = l; i <= r; ++i ) v[i] = aux[i];
}

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

  fin >> n;
  for ( int i = 1; i <= n; ++i ) {
	fin >> v[i];
  }
  mergesort(1, n);
  for ( int i = 1; i <= n; ++i ) {
	fout << v[i] << " ";
  }
  fin.close();
  fout.close();
  return 0;
}