#include <stdio.h>
#include <stdlib.h>
struct DynArray {
double * data;
size_t m; // total
size_t n; // used
} ;
int main( void ) {
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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBEeW5BcnJheSB7CiAgICBkb3VibGUgKmRhdGE7CiAgICBzaXplX3QgbTsgLy8gdG90YWwKICAgIHNpemVfdCBuOyAvLyB1c2VkCn07CgppbnQgbWFpbih2b2lkKSB7CiAgICBzdHJ1Y3QgRHluQXJyYXkgbnVtYmVycyA9IHsgMCB9OwogICAgZG91YmxlIG5ld251bTsKICAgIHdoaWxlIChzY2FuZigiJWxmIiwgJm5ld251bSkgPT0gMSAmJiBuZXdudW0gIT0gLTEpIHsKICAgICAgICBpZiAobnVtYmVycy5uID09IG51bWJlcnMubSkgewogICAgICAgICAgICBzaXplX3QgbmV3c2l6ZSA9IG51bWJlcnMubiAqIDEzIC8gOCArIDE7IC8vIHVzZSBwaGkgYXByb3hpbWF0aW9uIDEzLzgKICAgICAgICAgICAgZG91YmxlICpuZXdhcnIgPSByZWFsbG9jKG51bWJlcnMuZGF0YSwgbmV3c2l6ZSAqIHNpemVvZiAqbnVtYmVycy5kYXRhKTsKICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJTkZPOiByZWFsbG9jJ2VkIHdpdGggJWQgZWxlbWVudHMuXG4iLCAoaW50KW5ld3NpemUpOwogICAgICAgICAgICBpZiAoIW5ld2FycikgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgICAgICAgICBudW1iZXJzLmRhdGEgPSBuZXdhcnI7CiAgICAgICAgICAgIG51bWJlcnMubSA9IG5ld3NpemU7CiAgICAgICAgfQogICAgICAgIG51bWJlcnMuZGF0YVtudW1iZXJzLm5dID0gbmV3bnVtOwogICAgICAgIG51bWJlcnMubisrOwogICAgfQoKICAgIGZvciAoaW50IGkgPSBudW1iZXJzLm4gLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIHByaW50ZigiJWZcbiIsIG51bWJlcnMuZGF0YVtpXSk7CiAgICB9CgogICAgZnJlZShudW1iZXJzLmRhdGEpOwoKICAgIHJldHVybiAwOwp9Cg==