#include <stdio.h>
#include <stdlib.h>
struct DynArray {
double * data;
size_t m; // total
size_t n; // used
} ;
void growarray( struct DynArray * x) {
size_t newsize = x-> m * 13 / 8 + 1 ; // use phi aproximation 13/8
double * newarr
= realloc ( x
-> data
, newsize
* sizeof * x
-> data
) ; if ( ! newarr
) exit ( EXIT_FAILURE
) ; fprintf ( stderr
, "INFO: realloc'ed with %d elements.\n " , ( int ) newsize
) ; x-> data = newarr;
x-> m = newsize;
}
int main( void ) {
struct DynArray numbers = { 0 } ;
double newnum;
while ( scanf ( "%lf" , & newnum
) == 1 && newnum
!= - 1 ) { if ( numbers.n == numbers.m ) growarray( & numbers) ;
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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBEeW5BcnJheSB7CiAgICBkb3VibGUgKmRhdGE7CiAgICBzaXplX3QgbTsgLy8gdG90YWwKICAgIHNpemVfdCBuOyAvLyB1c2VkCn07Cgp2b2lkIGdyb3dhcnJheShzdHJ1Y3QgRHluQXJyYXkgKngpIHsKICAgIHNpemVfdCBuZXdzaXplID0geC0+bSAqIDEzIC8gOCArIDE7IC8vIHVzZSBwaGkgYXByb3hpbWF0aW9uIDEzLzgKICAgIGRvdWJsZSAqbmV3YXJyID0gcmVhbGxvYyh4LT5kYXRhLCBuZXdzaXplICogc2l6ZW9mICp4LT5kYXRhKTsKICAgIGlmICghbmV3YXJyKSBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICBmcHJpbnRmKHN0ZGVyciwgIklORk86IHJlYWxsb2MnZWQgd2l0aCAlZCBlbGVtZW50cy5cbiIsIChpbnQpbmV3c2l6ZSk7CiAgICB4LT5kYXRhID0gbmV3YXJyOwogICAgeC0+bSA9IG5ld3NpemU7Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIHN0cnVjdCBEeW5BcnJheSBudW1iZXJzID0geyAwIH07CiAgICBkb3VibGUgbmV3bnVtOwogICAgd2hpbGUgKHNjYW5mKCIlbGYiLCAmbmV3bnVtKSA9PSAxICYmIG5ld251bSAhPSAtMSkgewogICAgICAgIGlmIChudW1iZXJzLm4gPT0gbnVtYmVycy5tKSBncm93YXJyYXkoJm51bWJlcnMpOwogICAgICAgIG51bWJlcnMuZGF0YVtudW1iZXJzLm5dID0gbmV3bnVtOwogICAgICAgIG51bWJlcnMubisrOwogICAgfQoKICAgIGZvciAoaW50IGkgPSBudW1iZXJzLm4gLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIHByaW50ZigiJWZcbiIsIG51bWJlcnMuZGF0YVtpXSk7CiAgICB9CgogICAgZnJlZShudW1iZXJzLmRhdGEpOwoKICAgIHJldHVybiAwOwp9Cg==