typedef array< ld, 3 > P;
ld func( P p) ;
pair< ld, P> hillClimb( P start, ld width, int max_fail) {
pair< ld, P> cur( func( start) , start) ;
int failure;
for ( ld jmp = width; jmp > 1e-20 ; jmp / = 2 ) {
failure = 0 ;
while ( true ) {
rep( dx,- 1 ,2 ) rep( dy,- 1 ,2 ) rep( dz, - 1 , 2 ) {
if ( ! dx && ! dy && ! dz) continue ;
P p = cur.second ;
p[ 0 ] + = dx* jmp;
p[ 1 ] + = dy* jmp;
p[ 2 ] + = dz* jmp;
pair< ld, P> tmp = make_pair( func( p) , p) ;
if ( tmp.X < cur.X ) cur = tmp, failure = 0 ;
else if ( failure >= max_fail) goto NEXT_JMP;
else failure++ ;
}
}
NEXT_JMP:;
}
return cur;
}
dHlwZWRlZiBhcnJheTxsZCwgMz4gUDsKbGQgZnVuYyhQIHApOwpwYWlyPGxkLCBQPiBoaWxsQ2xpbWIoUCBzdGFydCwgbGQgd2lkdGgsIGludCBtYXhfZmFpbCkgewogICAgcGFpcjxsZCwgUD4gY3VyKGZ1bmMoc3RhcnQpLCBzdGFydCk7CiAgICBpbnQgZmFpbHVyZTsKICAgIGZvciAobGQgam1wID0gd2lkdGg7IGptcCA+IDFlLTIwOyBqbXAgLz0gMikgewogICAgCWZhaWx1cmUgPSAwOwogICAgICAgIHdoaWxlKHRydWUpewogICAgICAgICAgICByZXAoZHgsLTEsMikgcmVwKGR5LC0xLDIpIHJlcChkeiwgLTEsIDIpewogICAgICAgICAgICAgICAgaWYoIWR4ICYmICFkeSAmJiAhZHopIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgUCBwID0gY3VyLnNlY29uZDsKICAgICAgICAgICAgICAgIHBbMF0gKz0gZHgqam1wOwogICAgICAgICAgICAgICAgcFsxXSArPSBkeSpqbXA7CiAgICAgICAgICAgICAgICBwWzJdICs9IGR6KmptcDsKICAgICAgICAgICAgICAgIHBhaXI8bGQsIFA+IHRtcCA9IG1ha2VfcGFpcihmdW5jKHApLCBwKTsKICAgICAgICAgICAgICAgIGlmKHRtcC5YIDwgY3VyLlgpIGN1ciA9IHRtcCwgZmFpbHVyZSA9IDA7CiAgICAgICAgICAgICAgICBlbHNlIGlmKGZhaWx1cmUgPj0gbWF4X2ZhaWwpIGdvdG8gTkVYVF9KTVA7CiAgICAgICAgICAgICAgICBlbHNlIGZhaWx1cmUrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBORVhUX0pNUDo7CiAgICB9CiAgICByZXR1cm4gY3VyOwp9
compilation info
prog.cpp:1:9: error: ‘array’ does not name a type
typedef array<ld, 3> P;
^~~~~
prog.cpp:2:1: error: ‘ld’ does not name a type
ld func(P p);
^~
prog.cpp:3:1: error: ‘pair’ does not name a type
pair<ld, P> hillClimb(P start, ld width, int max_fail) {
^~~~
stdout