Cod sursa(job #1024454)

Utilizator dan.ghitaDan Ghita dan.ghita Data 8 noiembrie 2013 18:29:59
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, v[500000], c[500000], m;
void merge(int st, int dr, int m)
{
    int a=st, b=m, d=m+1, e=dr,k=0,i;
    while(a<=b && d<=e)
        if(v[a]<v[d])
        {
            c[k++]=v[a];
            a++;
        }
        else
           {
            c[k++]=v[d];
            d++;
           }
    while(a<=b)
        {
            c[k++]=v[a];
            a++;
        }
    while(d<=e)
        {
            c[k++]=v[d];
            d++;
           }
    for(i=st;i<=dr;i++)
        v[i]=c[i-st];

}
void msort(int st, int dr)
{
    int m;
    if(st<dr){
           m=(st+dr)/2;
           msort(st,m);
           msort(m+1,dr);
           merge(st, dr, m);
    }
}
int main()
{

    f>>n;
    for(int i=0;i<=n-1;i++) f>>v[i], c[i]=v[i];

 msort(0,n-1);
 for(int i=0;i<=n-1;i++)
    g<<v[i]<<" ";// cout<<v[i]<<" ";
    f.close();
    g.close();
    return 0;
}