Cod sursa(job #1785757)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 21 octombrie 2016 21:34:43
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream ka("algsort.in");
ofstream ki("algsort.out");

const int N_MAX = 500000;
const int MOD = 9917;
int n, v[N_MAX + 1], c[N_MAX + 1], raspuns;

void mergesort(int inc, int sf)
{
    if(inc < sf)
    {
        int middle = (inc + sf) / 2;
        mergesort(inc, middle);
        mergesort(middle + 1, sf);
        int x = inc;
        int y = middle + 1;
        for(int i = inc; i <= sf; i++)
            c[i] = v[i];
        int k = inc;
        while(x <= middle && y <= sf)
        {
            if(c[x] > c[y])
            {
                v[k] = c[y];
                y++;
            }
            else
            {
                //raspuns += y - middle - 1;
                //raspuns %= MOD;
                v[k] = c[x];
                x++;
            }
            k++;
        }
        if(x > middle)
            for(int i = k; i <= sf; i++)
                v[i] = c[y++];
        else
            for(int i = k; i <= sf; i++)
                {
                    v[i] = c[x++];
                    //raspuns++;
                }
        raspuns %= MOD;
    }

}

int main()
{
    ka >> n;
    for(int i = 1; i <= n; i++)
        ka >> v[i];
    mergesort(1, n);
    for(int i = 1; i <= n; i++)
        ki << v[i] << " ";
}