Nu aveti permisiuni pentru a descarca fisierul grader_test1.in
Cod sursa(job #1011800)
| Utilizator | Data | 17 octombrie 2013 15:28:55 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include<fstream>
#include <iostream>
using namespace std;
int b[500000];
void interclas(int st,int dr,int k[] )
{int m=(st+dr)/2,s=1,l=st,o=m+1;
while(l<=m||o<=dr)
{if(l>m)
b[s++]=k[o++];
if(o>dr)
b[s++]=k[l++];
if(k[l]>k[o])
b[s++]=k[o++];
else
b[s++]=k[l++];}
for(o=st,s=1;o<=dr;)
k[o++]=b[s++];}
void merg(int st,int dr,int x[])
{if(st==dr)
return;
int m=(st+dr)/2;
merg(st,m,x);
merg(m+1,dr,x);
interclas(st,dr,x);}
int main(void)
{int a[500000],n;
ifstream f("algsort.in");
f>>n;
for(int i=1;i<=n;i++)f>>a[i];
f.close();
merg(1,n,a);
ofstream g("algsort.out");
for(int i=1;i<=n;i++)g<<a[i]<<" ";g.close();}