Cod sursa(job #1011799)

Utilizator bersekerHoinaru Mihai berseker Data 17 octombrie 2013 15:21:19
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <iostream>
using namespace std;
int b[500000];

void interclas(int left,int right,int k[])
{int m=(left+right)/2,s=1,l=left,o=m+1;
while(l<=m||o<=right)
{if(l>m){b[s++]=k[o++];continue;}
if(o>right){b[s++]=k[l++];continue;}
if(k[l]>k[o])b[s++]=k[o++];
else b[s++]=k[l++];}
for(o=left,s=1;o<=right;)k[o++]=b[s++];}

void merg(int left,int right,int t[])
{if(left==right)return;
int m=(left+right)/2;
merg(left,m,t);
merg(m+1,right,t);
interclas(left,right,t);}

int main()
{int a[100000],n;
 ifstream f("algsort.in");
 f>>n;
 for(int i=1;i<=n;i++)
  f>>a[i];
 f.close();
 merg(1,n,a);
 ofstream g("algsort.out");
 for(int i=1;i<=n;i++)
  g<<a[i]<<" ";
 g.close();}