#include <stdio.h>
#include <stdlib.h>
struct DynArray {
double * data;
size_t m; // total
size_t n; // used
} ;
int main( void ) {
int cnt = 0 ;
struct DynArray numbers = { 0 } ;
double newnum;
while ( scanf ( "%lf" , & newnum
) == 1 && newnum
!= - 1 ) { if ( numbers.n == numbers.m ) {
size_t newsize = numbers.n * 13 / 8 + 1 ; // use phi aproximation 13/8
double * newarr
= realloc ( numbers.
data , newsize
* sizeof * numbers.
data ) ; fprintf ( stderr
, "INFO: realloc'ed with %d elements.\n " , ( int ) newsize
) ; if ( ! newarr
) exit ( EXIT_FAILURE
) ; numbers.data = newarr;
numbers.m = newsize;
}
numbers.data [ numbers.n ] = newnum;
numbers.n ++;
}
for ( int i = numbers.n - 1 ; i >= 0 ; -- i) {
printf ( "%f\n " , numbers.
data [ i
] ) ; }
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBEeW5BcnJheSB7CiAgICBkb3VibGUgKmRhdGE7CiAgICBzaXplX3QgbTsgLy8gdG90YWwKICAgIHNpemVfdCBuOyAvLyB1c2VkCn07CgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgY250ID0gMDsKICAgIHN0cnVjdCBEeW5BcnJheSBudW1iZXJzID0geyAwIH07CiAgICBkb3VibGUgbmV3bnVtOwogICAgd2hpbGUgKHNjYW5mKCIlbGYiLCAmbmV3bnVtKSA9PSAxICYmIG5ld251bSAhPSAtMSkgewogICAgICAgIGlmIChudW1iZXJzLm4gPT0gbnVtYmVycy5tKSB7CiAgICAgICAgICAgIHNpemVfdCBuZXdzaXplID0gbnVtYmVycy5uICogMTMgLyA4ICsgMTsgLy8gdXNlIHBoaSBhcHJveGltYXRpb24gMTMvOAogICAgICAgICAgICBkb3VibGUgKm5ld2FyciA9IHJlYWxsb2MobnVtYmVycy5kYXRhLCBuZXdzaXplICogc2l6ZW9mICpudW1iZXJzLmRhdGEpOwogICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIklORk86IHJlYWxsb2MnZWQgd2l0aCAlZCBlbGVtZW50cy5cbiIsIChpbnQpbmV3c2l6ZSk7CiAgICAgICAgICAgIGlmICghbmV3YXJyKSBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgICAgIG51bWJlcnMuZGF0YSA9IG5ld2FycjsKICAgICAgICAgICAgbnVtYmVycy5tID0gbmV3c2l6ZTsKICAgICAgICB9CiAgICAgICAgbnVtYmVycy5kYXRhW251bWJlcnMubl0gPSBuZXdudW07CiAgICAgICAgbnVtYmVycy5uKys7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IG51bWJlcnMubiAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgcHJpbnRmKCIlZlxuIiwgbnVtYmVycy5kYXRhW2ldKTsKICAgIH0KCiAgICBmcmVlKG51bWJlcnMuZGF0YSk7CgogICAgcmV0dXJuIDA7Cn0K