#include <stdio.h>
#include <stdlib.h>
struct list
{
int id;
char string[20];
float w;
float h;
float bmi;
struct list *next;
} ;
void print(struct list *head,int t);
int main()
{
int t,c;
struct list *head,*ne,*last;
struct list l1;
head = &l1;
scanf("%d %s %f %f",&l1.
id,&l1.
string[0],&l1.
w,&l1.
h); l1.bmi = l1.w/(l1.h * l1.h);
for(c=2;c<=t;c++)
{
ne
= (struct list
*) malloc(sizeof(struct list
)); if(c==2) { l1.next = ne;}
scanf("%d %s %f %f",&ne
->id
,&ne
->string
[0],&ne
->w
,&ne
->h
); ne->bmi = ne->w/(ne->h * ne->h);
if( c < t )
{
last->next = ne;
}
last = ne;
if(c == t)
{
last->next = NULL;
}
}
print(head,t);
return 0;
}
/*sorting and printing function*/
void print(struct list *head,int t)
{
int c1,c2,c3;
struct list *ptr,*ptr1,*ptr2,*temp1,*temp2,*temp3;
struct list *pri;
for(c1=1;c1<=t;c1++) /*logic correction needed*/
{
ptr= head;
ptr1=head->next;
ptr2=ptr1->next;
for(c2=1;c2<=t;c2++)
{
temp1=ptr->next;
temp2=ptr1->next;
temp3=ptr2->next;
if(ptr2->bmi > ptr1->bmi)
{
ptr1->next = temp3;
ptr2->next = temp1;
if(ptr == head)
{ptr = temp2;}
else
{ptr->next = temp2;}
ptr2=ptr1->next;
ptr=ptr->next;
}
else
{
ptr=ptr1;
ptr1=temp2;
ptr2=temp3;
}
if(ptr1->next == NULL) break;
}
}
/*printing*/
pri=head;
for(c3=1;c3<=t;c3++)
{
printf("%d %s %.2f %.2f %.2f",pri
->id
,pri
->string
[0],pri
->w
,pri
->h
,pri
->bmi
); pri = pri->next;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4Kc3RydWN0IGxpc3QKewppbnQgaWQ7CmNoYXIgc3RyaW5nWzIwXTsKZmxvYXQgdzsKZmxvYXQgaDsKZmxvYXQgYm1pOwpzdHJ1Y3QgbGlzdCAqbmV4dDsKfSA7CnZvaWQgcHJpbnQoc3RydWN0IGxpc3QgKmhlYWQsaW50IHQpOwppbnQgbWFpbigpCnsKaW50IHQsYzsKc2NhbmYoIiVkIiwmdCk7CnN0cnVjdCBsaXN0ICpoZWFkLCpuZSwqbGFzdDsgCnN0cnVjdCBsaXN0IGwxOwpoZWFkID0gJmwxOwpzY2FuZigiJWQgJXMgJWYgJWYiLCZsMS5pZCwmbDEuc3RyaW5nWzBdLCZsMS53LCZsMS5oKTsKbDEuYm1pID0gbDEudy8obDEuaCAqIGwxLmgpOwoJZm9yKGM9MjtjPD10O2MrKykKCXsKCW5lID0gKHN0cnVjdCBsaXN0ICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IGxpc3QpKTsKCWlmKGM9PTIpIHsgbDEubmV4dCA9IG5lO30KCXNjYW5mKCIlZCAlcyAlZiAlZiIsJm5lLT5pZCwmbmUtPnN0cmluZ1swXSwmbmUtPncsJm5lLT5oKTsKCW5lLT5ibWkgPSBuZS0+dy8obmUtPmggKiBuZS0+aCk7CgkJaWYoIGMgPCB0ICkKCQl7CgkJbGFzdC0+bmV4dCA9IG5lOwkKCQl9CgkJbGFzdCA9IG5lOwoJCWlmKGMgPT0gdCkKCQl7CgkJbGFzdC0+bmV4dCA9IE5VTEw7CgkJfQoJfQpwcmludChoZWFkLHQpOwpyZXR1cm4gMDsKfQovKnNvcnRpbmcgYW5kIHByaW50aW5nIGZ1bmN0aW9uKi8Kdm9pZCBwcmludChzdHJ1Y3QgbGlzdCAqaGVhZCxpbnQgdCkKewppbnQgYzEsYzIsYzM7CnN0cnVjdCBsaXN0ICpwdHIsKnB0cjEsKnB0cjIsKnRlbXAxLCp0ZW1wMiwqdGVtcDM7CnN0cnVjdCBsaXN0ICpwcmk7CmZvcihjMT0xO2MxPD10O2MxKyspIC8qbG9naWMgY29ycmVjdGlvbiBuZWVkZWQqLwp7CnB0cj0gaGVhZDsKcHRyMT1oZWFkLT5uZXh0OwpwdHIyPXB0cjEtPm5leHQ7Cglmb3IoYzI9MTtjMjw9dDtjMisrKQoJewoJCXRlbXAxPXB0ci0+bmV4dDsKICAgICAgICB0ZW1wMj1wdHIxLT5uZXh0OwogICAgICAgIHRlbXAzPXB0cjItPm5leHQ7CglpZihwdHIyLT5ibWkgPiBwdHIxLT5ibWkpCgl7CgkJcHRyMS0+bmV4dCA9IHRlbXAzOwoJCXB0cjItPm5leHQgPSB0ZW1wMTsKCQlpZihwdHIgPT0gaGVhZCkgCgkJe3B0ciA9IHRlbXAyO30KCQllbHNlCgkJe3B0ci0+bmV4dCA9IHRlbXAyO30KCQlwdHIyPXB0cjEtPm5leHQ7CiAgICAgICAJcHRyPXB0ci0+bmV4dDsKCQl9CgllbHNlCgkJewoJCXB0cj1wdHIxOwoJCXB0cjE9dGVtcDI7CgkJcHRyMj10ZW1wMzsKCQl9CglpZihwdHIxLT5uZXh0ID09IE5VTEwpIGJyZWFrOyAKCX0KfQovKnByaW50aW5nKi8KcHJpPWhlYWQ7CmZvcihjMz0xO2MzPD10O2MzKyspCnsKcHJpbnRmKCIlZCAlcyAlLjJmICUuMmYgJS4yZiIscHJpLT5pZCxwcmktPnN0cmluZ1swXSxwcmktPncscHJpLT5oLHByaS0+Ym1pKTsKcHJpID0gcHJpLT5uZXh0Owp9Cn0=