Nu aveti permisiuni pentru a descarca fisierul grader_test12.ok
Cod sursa(job #1299673)
| Utilizator | Data | 23 decembrie 2014 19:51:45 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.79 kb |
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int NMAX=500001;
int v[NMAX],res[NMAX];
void mergesort (int sir[],int S,int F)
{
if(S==F) return;
else
{
int mid=S+(F-S)/2,piv=mid+1; //!
mergesort(v,S,mid);
mergesort(v,mid+1,F);
int aux=S,i;
for(i=S;i<=F;i++)
{
if(S<=mid && (piv>F || sir[S]<=sir[piv]))
res[i]=sir[S++];
else
res[i]=sir[piv++];
}
for(i=aux;i<=F;i++)
sir[i]=res[i];
}
}
int main()
{
int N;
f>>N;
int i;
for(i=1;i<=N;i++)
f>>v[i];
mergesort(v,1,N);
for(i=1;i<=N;i++)
g<<v[i]<<' ';
}