Pagini recente » Cod sursa (job #2550077) | Cod sursa (job #1116204) | Cod sursa (job #2243794) | Cod sursa (job #1528810) | Cod sursa (job #2345184)
#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;
}