Cod sursa(job #2345184)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 15 februarie 2019 22:35:32
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include<fstream>
#define inf 2147483647
using namespace std;
ifstream fin ("algsort.in");
ofstream fout("algsort.out");
struct nod{
    int val;
    nod* leg;
}*v[500002];
int n,i,k;

void interclasare(nod* &a, nod* &b){
    nod *c,*p,*u;
    c=new nod;
    c->val=a->val+b->val;
    u=c;
    while(a->leg!=0 || b->leg!=0 ){
        if((b->leg==0) || (a->leg!=0 && a->leg->val<b->leg->val)){
            p=a->leg; a->leg=a->leg->leg;
            u->leg=p;u=p;
        }
        else{
            p=b->leg; b->leg=b->leg->leg;
            u->leg=p;u=p;
        }
    }
    u->leg=0;
    delete a; delete b;
    a=c;
}

int main(){
    fin>>n;
    for(int i=1;i<=n;i++){
        v[i]=new nod;
        v[i]->val=1;
        v[i]->leg=new nod;
        fin>>v[i]->leg->val;
        v[i]->leg->leg=0;
    }
    while(n>1){
        k=1;
        while(k<n){
            interclasare(v[k],v[n]);
            k++;n--;
        }
    }
    for(nod *i=v[1]->leg;i!=0;i=i->leg){
        fout<<i->val<<" ";
    }
    fout.close();
    return 0;
}