Cod sursa(job #241554)

Utilizator MciprianMMciprianM MciprianM Data 10 ianuarie 2009 13:13:32
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream>
#include<algorithm>
using namespace std;
int a[500009];
int c[500009];
void mergesort(int p, int u){
  if(p<u){
    int m=(p+u)/2,i;
    mergesort(p,m);
    mergesort(m+1,u);
    i=0;
    int s1=p,s2=m+1;
    while(s1<=m&&s2<=u)
      c[i++]=a[s1]<a[s2]?a[s1++]:a[s2++];
    while(s1<=m)
      c[i++]=a[s1++];
    while(s2<=u)
      c[i++]=a[s2++];
    int j=u;
    while(--i)
      a[j--]=c[i];
    a[j]=c[0];
  }
}
int main(){
  ifstream f("algsort.in");
  ofstream g("algsort.out");
  int n,i;
  f>>n;
  for(i=0;i<n;i++)
    f>>a[i];
  f.close();
  mergesort(0,n-1);
  for(i=0;i<n;i++)
    g<<a[i]<<' ';
  g<<'\n';
  g.close();
  return 0;
}