Cod sursa(job #2862360)

Utilizator Cris.CristinaPopescu Cristina Cris.Cristina Data 5 martie 2022 12:11:45
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.6 kb
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
/*
int cmp(const int &a, const int &b) ///sortare descrescatoare
{
    return a>b;
}
*/
void Merge(long v[],long st, long dr, long mid)
{
    long i,j,k;
    long left[mid-st+1];
    long right[dr-mid];
    for(i=0;i<mid-st+1;i++)
        left[i]=v[st+i];
    for(j=0;j<dr-mid;j++)
        right[j]=v[mid+j+1];
    i=0; j=0;
    k=st;
    for(k=st;i<mid-st+1&&j<dr-mid;k++)
        if(left[i]<=right[j])
            v[k]=left[i++];
        else
            v[k]=right[j++];
    while(i<mid-st+1)
        v[k++]=left[i++];
    while(j<dr-mid)
        v[k++]=right[j++];
}
void MergeSort(long v[],long st,long dr)
{
    long mid;
    if(st<dr)
    {
        mid=(st+dr)/2;
        MergeSort(v,st,mid);
        MergeSort(v,mid+1,dr);
        Merge(v,st,dr,mid);
    }
}
int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    long n;
    ///sortare perechi
    /*pair <int,int> v[1000];
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i].first>>v[i].second;
    sort(v+1,v+n+1);
    */
    f>>n;
    long v[n];
    for(long i=0;i<n;i++)
        f>>v[i];
    /*for(int i=1;i<=n;i++)
        g<<v[i].first<<" "<<v[i].second<<endl;
        */
    MergeSort(v,0,n-1);
    for(long i=0;i<n;i++)
        g<<v[i]<<" ";
    f.close();
    g.close();
    return 0;



   /* long n, v[500000];
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
    sort(v+1,v+n+1,cmp);
    for(int i=1;i<=n;i++)
        g<<v[i]<<" ";
    f.close();
    g.close();
    return 0;
    */
}