Cod sursa(job #2529974)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 24 ianuarie 2020 11:18:37
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int len, v[500001], w[500001];

void iclas(int st, int mid, int dr){
      int i=st;
      int j=mid+1;
      w[0]=st-1;


      while(i <= mid && j <= dr)
            if(v[i] > v[j]){
                  w[++w[0]]=v[j];
                  j++;
            }else{
                  w[++w[0]]=v[i];
                  i++;
            }

      for(int k=i; k<=mid; k++) w[++w[0]]=v[k];
      for(int k=j; k<=dr ; k++) w[++w[0]]=v[k];

      for(int k=st; k<=dr; k++)
            v[k]=w[k];
}

void sortt(int st, int dr){
      if(st < dr){
            int mid=(st+dr)/2;
            sortt(st, mid);
            sortt(mid+1, dr);
            iclas(st, mid, dr);
      }
}

int main (){
      fin>>len;
      for(int i=1; i<=len; i++) fin>>v[i];
      sortt(1, len);
      for(int i=1; i<=len; i++) fout<<v[i]<<" ";
      return 0;
}