Coding
OOP Design

Observer on a Market-Data Bus

Premium
Difficulty

Asked at Hudson River Trading

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 xxx, x xxxxxx-xxxx xxx xxxx xxxx xxx xxxx xxx xx xxxxx xxxxxxxx xxxx xxxxxxxxxx. xxxxxxxxxxx xxx xxxxxx xxxxx x xxxx xx xxxxx xxxxxxxxx: x xxxxxxxx xxxx xxxx xxx xxxx xxxxxxxxxxxx xxxxxx xxxx xxxxxx xxx xxxxxxxx, xxxxx xxx xxx xx xxxx-xxx xxxxxxx xxx xxxx.

xxxxxxxxx xxx xxxx xxxxxxxxxx xxxxx x xxxxxxxx xxxxxxx xx xxx xxxx xx xxx xxxxxx xx x xxxx. xxxxxxx xxx xxxx xxxxx xxxxxx xxx xxxxx xxx xxxxxxxxxx x xxxxxxx xxx.

xxx xxx xxxxx xxxxxxx:

  • xxxxxxxxx(xxxx, xxxxxxxx): xxxxxxxx. x xxxxxxxx xxxx xxxxxxxx xxx xxxxxxxx xxx xxxxx xxx xxxxxxxx xxxxxxxx.
  • xxxxxxxxxxx(xxxx): xxxxxx; xxxxxx xxxxxxx xx xxx xxxxx.
  • xxxxxxx(xxxx): xxxx xxxxx xxxxxxxxxx xxxx xxx xxxx, xx xxxxxxxxxxxx xxxxx, xxx xxxxxx xxx xxxx xxxxxxxxx xxxx xxxxxxxx xxxxxxx.
  • xxxxxxxxxxx(): xxx xxxxx, xx xxxxxxxxxxxx xxxxx.
xxxxx xxx {
xxxxxx:
    xxxxx xxxxxxxx = xxx::xxxxxxxx<xxxx(xxxx xxxx)>;
    xxxx xxxxxxxxx(xxxxx xxx::xxxxxx& xxxx, xxxxxxxx xxxxxxxx);
    xxxx xxxxxxxxxxx(xxxxx xxx::xxxxxx& xxxx);
    xxxx xxxx xxxxxxx(xxxx xxxx xxxx);
    xxx::xxxxxx<xxx::xxxxxx> xxxxxxxxxxx() xxxxx;
};

x xxxxxxxx xx x xxx::xxxxxxxx<xxxx(xxxx xxxx)>; xxx xxxxx xxxx xxxxxxx xxxx xxxxxxx xxx xxx xxx xxxx xxxx xxxx xx xxx-xxxx. xxxxxxxxxxx xxxxxxx xxxx xx xxx xxxx xxx xxxxx. xxxxxxxxxxx() xxxxxxx x xxx xxxxxx xx xxx xxxxx.

xxx xxxxx xxxxxx xxxxxxx xxxx xxxxxx x xxxxxxx, xxx xxxx xxx xxxxxxxxxxxx xxx xxx xxxx xxxx:

  • x xxxxxxxxxx xxxxx xxxxxx xxx xxxx xxxx xxx xxxxxxx xx: xx xxx xxx xxxxxxxxxx xxxx xxx xxxx xxxxx;
  • x xxxxxxxxxx xxxxxxx xxxxxx xxx xxxx xxxx xxx xxxxxxx xx xxxxxx, xxxx xx xxx xxxx xxx xxx xxxxxxx xx xxx.

xxxxxxxx

xxx::xxxxxx<xxx::xxxx<xxx::xxxxxx, xxxx xxxx>> xxxx;
xxx xxx;
xxx.xxxxxxxxx("x", [&](xxxx xxxx x) { xxxx.xxxxxxx_xxxx("x", x); xxx.xxxxxxxxxxx("x"); });
xxx.xxxxxxxxx("x", [&](xxxx xxxx x) { xxxx.xxxxxxx_xxxx("x", x); });
xxx.xxxxxxxxx("x", [&](xxxx xxxx x) { xxxx.xxxxxxx_xxxx("x", x); });

xxx.xxxxxxx(x);  // x, xxx "x" xxxxx xxxxx xxxxx xx
// xxxx xx {{"x", x}, {"x", x}}

xxxxxxxxxxx

  • xx xxx xxxxx xx xxxxx xxxx xxx xxxxxxx xxxxxx xxx xxx xxxxxxxxxx xx xxxxxxx xx xxx xx. x xxxxx xxxxxxxx xxxx xxx xxxxx xxxx xxx xxxxx xxx xxxxxx; xxxxxxxxx xxx xxxx xxxxxxxxxx xxxxx xxxxxxxx.
  • xxxxxxxxxxxxx xxxxxxxxx xxxx xx xxx xxxxx xxxxxxx xxxx xx xxx xxxxxx xxx xx xxx xx xxxxx. x xxxxxxxx xxxxxxxx xxxx xxxx xxx xxxxxxxxxxx xxxx xxxxxxx xx xx xxxxx xxxxxxxxxx.
  • xxxxxxx xxxxxxx xxx xxxxxx xx xxxxxxxxx xxxxxxx, xxx xxx xxxxxx xx xxxxxxxxxxx.

This problem is only available to subscribers.

Language:
Python 3.12C++23
Bus

Unlock the problem to run it against the tests.