Cod sursa(job #983218)

Utilizator classiusCobuz Andrei classius Data 11 august 2013 10:45:30
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.79 kb
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int main()
{
    int n;
    int *v[2];
    f>>n;
    for(int i=0;i<2;i++)
        v[i]=new int[500001];

    for(int i=1;i<=n;i++)
        f>>v[0][i];

    int q=1;

    for(int l=1;(1<<(l-1))<n;l++){
        q=1-q;
        for(int i=1;i<=n;i+=(1<<l)){
            int i1=i,j1=( i+(1<<(l-1)) < n+1 ? i+(1<<(l-1)) : n+1),i2=j1,j2=( i+(1<<l) < n+1 ? i+(1<<l) : n+1),t=i;

            while(i1<j1||i2<j2){
                if(i2>=j2||(i1<j1&&v[q][i1]<=v[q][i2]))
                    v[1-q][t++]=v[q][i1++];
                else
                    v[1-q][t++]=v[q][i2++];
            }
        }
    }

    for(int i=1;i<=n;i++)
        g<<v[1-q][i]<<" ";

    return 0;
}






















/*
#include <fstream>
#include <iomanip>

using namespace std;

FILE *f=fopen("date.in","r");
ofstream g("date.out");

int main()
{
    int n,m;
    fscanf(f,"%d%d",&n,&m);

    int pr[100001],vm[100001],d[100001];

    for(int i=1;i<n;i++){
        int x,y,d1,v;
        fscanf(f,"%d%d%d%d",&x,&y,&d1,&v);
        if(x>y){
            int ax=x;
            x=y,y=ax;
        }
        pr[y]=x;
        d[y]=d1;
        vm[y]=v;
    }

    for(int i=1;i<=m;i++){
        int x,y,vx;
        fscanf(f,"%d%d%d",&x,&y,&vx);
        if(x>y){
            int ax=x;
            x=y,y=ax;
        }
        double s=0;
        while(x!=y){
            while(y>x){
                if(vx>vm[y]) s+=double(d[y])/vm[y];
                else s+=double(d[y])/vx;
                y=pr[y];
            }
            while(x>y){
                if(vx>vm[x]) s+=double(d[x])/vm[x];
                else s+=double(d[x])/vx;
                x=pr[x];
            }
        }
        g<<setprecision(3)<<fixed<<s<<'\n';
    }

    return 0;
}*/