Cod sursa(job #2677869)

Utilizator mihaipriboimihailucapriboi mihaipriboi Data 27 noiembrie 2020 17:53:47
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
// Mihai Priboi

#include <bits/stdc++.h>
#define MAX_N 500000

int v[MAX_N];

void sort( int v[], int st, int dr, int bit ) {
  if( st >= dr || bit == -1 )
    return;

  int i, j;

  j = st;
  for( i = st; i <= dr; i++ ) {
    if( (v[i] & (1 << bit)) == 0 ) {
      std::swap(v[i], v[j]);
      j++;
    }
  }

  sort(v, st, j - 1, bit - 1);
  sort(v, j, dr, bit - 1);
}

int main() {
  FILE *fin, *fout;
  int n, i;
  fin = fopen( "algsort.in", "r" );
  fscanf( fin, "%d", &n );
  for( i = 0; i < n; i++ )
    fscanf( fin, "%d", &v[i] );
  fclose( fin );

  sort(v, 0, n - 1, 30);

  fout = fopen( "algsort.out", "w" );
  for( i = 0; i < n; i++ )
    fprintf( fout, "%d ", v[i] );
  fclose( fout );
  return 0;
}