Coding
OOP Design

Swap a Strategy at Runtime

Premium
Difficulty

Asked at Da Vinci Derivatives

Theory: Order Books and Matching

Read the problem, hints and solution here. The editor needs a bigger screen: open this page on a laptop to write and run your code.

Available in Python and C++. You are solving it in C++. Switch to Python

xxxxxxxxx xxxxx xxxxxxxx xxxxxx xxx xx xxxxxx xxxx xxxxx xxx xxx xxx xxxx xx xx xxxxxxx, xxxxx xxx xxxxxxxx xxxxxxx.

x xxxx xxxxxxx xxx xxxx xxxxxxxx xxxxxx xxxxxxxx xxxx xxxxxxxxxxxx xx xxxx xxxxxxx x xxxxxxx. x xxxxxxxx xxxxxxxxx xx x xxxxxx xxxxx xx xxxxxx, xxx xx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxx. xxx xxxxxxxx xxxxxxx xxx.

  • xxxxxxxxx(xxxx): xxxxxx xxxx, xxxxxxxx xxx xxxxxx.
  • xxxxxxxxxxxxxxxxx(xxxxx): xxxxxx * xxxxx / xxx, xxxxxxxxx xxxxxx xxxx. xxxxxxxx xxxxxx xxxxxxxx xxxxxxxx xx xxx xxxx x xxxxxxxx xxxx xxxxx: ( -xxx xxxxx x / xxx ) xx ( -x ), xxx ( -x ).
  • xxxxxxxxxxx(xxxxx, xxxxx): xxxxxxxxxxxx, xxxxx xxxx xxxx xxxxx xx xxxxxx xxxxxxxxx.
  • xxxxxx(xxxxx) xxxx xxx_xxxxx, xxxxx(xxxxxx), xxxxxxx() xxx x xxxxxxx xxxxxxxx().

xxxxx xxxxx xxxxxxx xxx xxxxxx, xxxx(xxxxxx), xxxxxxxxx xx xxxxxxx xxxx: xxxx xxxxxx xx xxx xxxxxx xxxxxxxxx xxx xxxxxx xxxx.

xxxxxx xxxxx {
    xxxxxxx ~xxxxx() = xxxxxxx;
    xxxxxxx xxxx xxxx xxxx(xxxx xxxx xxxxxx) xxxxx = x;
};
xxxxx xxxxxxxxx : xxxxxx xxxxx { xxxxxx: xxxxxxxx xxxxxxxxx(xxxx xxxx xxxx); /* ... */ };
xxxxx xxxxxxxxxxxxxxxxx : xxxxxx xxxxx { xxxxxx: xxxxxxxx xxxxxxxxxxxxxxxxx(xxxx xxxx xxxxx); /* ... */ };
xxxxx xxxxxxxxxxx : xxxxxx xxxxx { xxxxxx: xxxxxxxxxxx(xxxx xxxx xxxxx, xxxx xxxx xxxxx); /* ... */ };

xxxxx xxxxxx {
xxxxxx:
    xxxxxxxx xxxxxx(xxx::xxxxxx_xxx<xxxxx> xxxxx);
    xxxx xxx_xxxxx(xxx::xxxxxx_xxx<xxxxx> xxxxx);
    xxxx xxxx xxxxx(xxxx xxxx xxxxxx);
    xxx::xxxxxx<xxx::xxxx<xxxx xxxx, xxxx xxxx>> xxxxxxx() xxxxx;
    xxxx xxxx xxxxxxxx() xxxxx;
};

xxxxx xx xx xxxxxxxx xxxx xxxxx xxxx xxx xxxxxxx xxxxxx, xxxxx xxxxx xxxxxxx xxxx xx, xxx xxx xxxxxx xxxxx x xxx::xxxxxx_xxx<xxxxx>. xxx xxxxxx xxxx xxxx xxxxxx x xxxxx xxx xxxxxx xxx xxxxx xxxx xxxxxxx xxx xxx xxxxxxxx xx xxxxx. xxx xxxxxxx xx x xxxxxx xx {xxxxxx, xxxx} xxxxx. x++ xxxxxxx xxxxxxxx xxxxxxx xxxxxxxxx xxxxxx xxxx, xx x xxxxx xxxxxx * xxxxx / xxx xxxxx xxx xxxxx xxxx, xxx xxx xxxx xxx xx xxxxx xxxx.

x xxxx xxxxx xxxxxx xxxx xxx xxxx xxxxx. xxxxxx xxxxxxx xxxxxx xxxx xxxxxx xxxxx xxx xxx xxxxxx xxx xxxx xxxx xxx.

xxxxxxxx

xxxxxx x(xxx::xxxx_xxxxxx<xxxxxxxxx>(x));
x.xxxxx(xxx);                                        // x
x.xxx_xxxxx(xxx::xxxx_xxxxxx<xxxxxxxxxxxxxxxxx>(x));
x.xxxxx(xxx);                                        // x
x.xxxxx(-xxx);                                       // -x
x.xxxxxxxx();                                        // x

xxxxxxxxxxx

  • xxx xxxxxx xxxx xxxxx xxx xxxx xxxx xx xxxxx xx xx xxxxxxx. xx xxxxxxx_xxxx, xx xxxx xxxx, xx xx/xxxx xxxx xxxxxxxx xxxxx. x xxx xxxxxxxx xxxxxx xxxx xx xxxxxx xx xxx xxxxxx xx xxx, xxx xxx xxxxxx xxxx xxxxxx xx x xxxxx xxxxx xx xxx xxxxx xxxx.
  • xxxxx xxxxxxx xxx xxxx, xxxx xx xx xxx xxxxxxxx, xxx xxxxxxx xxx xxxxxx xxx xxx xxxx xx xxx xxxxxxx.
  • xxx xxxxx xxx xxxxx xxxxxxxx.

This problem is only available to subscribers.

Language:
Python 3.12C++23
Engine

Unlock the problem to run it against the tests.