//generated by GPT-5.4, modified by hamamu namespace FibonacciSearchSpace{ using ll = long long; using Int = long long; template pair fibonacciSearchCore(F f,ll l,ll r,const T &worseValue){ assert(l<=r); auto better=[&](const T &x,const T &y)->bool{ //true:xがyよりbetter if constexpr (MINIMIZE) return xy; }; auto get=[&](ll x)->T{ //区間外の点はダミー値を返すラッパー if(x auto fibonacciSearch(F f,ll l,ll r, const decay_t> &worseValue) { using T = decay_t>; return fibonacciSearchCore(f,l,r,worseValue); } } using FibonacciSearchSpace::fibonacciSearch; /* - フィボナッチ探索: [l,r]の整数xに対しf(x)の最小/最大値を取得 auto f=[&](ll x) { return (x-5)*(x-5)+3; }; auto [mnf,mnx]=fibonacciSearch (f,l,r,INF); //最小化 auto [mxf,mxx]=fibonacciSearch(f,l,r,-INF); //最大化 - 極値以外は"狭義"単調増加/減少であること(同点不可) - 極値のみ同点複数可 - データ型Tは比較可能であればよい(単項マイナスは不要) pll,stringなども可 */