Pagini recente » Cod sursa (job #2695938) | Cod sursa (job #2173076) | Cod sursa (job #2425518) | Cod sursa (job #2218525) | Cod sursa (job #1785757)
#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] << " ";
}