Cross-Margin Liquidation Engine 
Simulate a cross-margin derivatives engine: process trades, track account equity, and liquidate undercollateralized accounts as fast as possible.
Accounts are funded with a USD deposit and trade instruments whose prices change over time. When a price update causes an account’s equity to fall below 1% of its total position notional, the account must be liquidated.
Definitions
- Account equity =
balance + Σ(size_i * price_i) - Σ(total_paid_i) - Total position notional =
Σ(|size_i| * price_i) - Total paid for instrument
i= signed sum oftrade_size * price_at_trade_timeacross all trades - Margin rule: liquidate if
equity < total_notional / 100after any price update
Input
One command per line on STDIN:
a <balance>– create account with USD balance (IDs start at0, incrementing)p <instrument_idx> <price>– set/update instrument price (0-indexed)t <account_idx> <instrument_idx> <size>– tradesize(signed) at current price- Final line:
<account_idx>– query this account and terminate
Output
On each price update, liquidate all accounts violating the margin rule. For each liquidation, print:
liquidate <account_id> <equity> <position_notional>
Liquidation order: largest total position notional first, then account ID descending as tie-breaker. Liquidated accounts have their balance and positions cleared.
For the final query, print <equity> <notional> for the requested account.
Constraints
- Accounts: <= 100,000
- Instruments: <= 1,000
- Price range: 100 to 1,000,000
- Trade size range: 1 to 10,000
Example
a 100
p 0 100
t 0 0 10
p 0 90
0
Output:
liquidate 0 0 900
0 0
| Date | Author | Language | Status | Score | |
|---|---|---|---|---|---|
| Oct 9, 2025 14:57 | CPPg++13.3.0 | Success | 8,409 | ||
| Oct 9, 2025 14:56 | CPPg++13.3.0 | Success | 8,385+2'074.06 RP | ||
| Oct 8, 2025 20:11 | CPPclang++18.1.3 | Success | 225,271 | ||
| Oct 8, 2025 18:41 | CPPclang++18.1.3 | Error | |||
| Oct 8, 2025 18:17 | CPPclang++18.1.3 | Error | |||
| Oct 8, 2025 17:49 | CPPclang++18.1.3 | Success | 82,282 | ||
| Oct 8, 2025 17:47 | CPPclang++18.1.3 | Error | |||
| Oct 8, 2025 17:24 | CPPclang++18.1.3 | Error | |||
| Oct 8, 2025 17:13 | CPPclang++18.1.3 | Error | |||
| Oct 8, 2025 16:43 | CPPclang++18.1.3 | Error | |||
| Oct 8, 2025 16:42 | CPPclang++18.1.3 | Error | |||
| Oct 8, 2025 14:50 | CPPclang++18.1.3 | Error | |||
| Oct 8, 2025 14:35 | CPPclang++18.1.3 | Error | |||
| Oct 8, 2025 11:52 | CPPclang++18.1.3 | Error | |||
| Oct 8, 2025 11:00 | CPPclang++18.1.3 | Error | |||
| Oct 7, 2025 21:38 | CPPclang++18.1.3 | Error | |||
| Oct 7, 2025 21:22 | CPPclang++18.1.3 | Error | |||
| Oct 7, 2025 21:02 | CPPclang++18.1.3 | Error | |||
| Oct 7, 2025 10:02 | CPPclang++18.1.3 | Success | 82,979 | ||
| Oct 7, 2025 09:50 | CPPclang++18.1.3 | Success | 75,572 | ||
| Oct 7, 2025 09:41 | CPPclang++18.1.3 | Error | |||
| Oct 7, 2025 09:28 | CPPclang++18.1.3 | Success | 64,277+11.18 RP | ||
| Oct 7, 2025 00:17 | RUSTrust-1.90.0 | Success | 6,640+1'262.26 RP | ||
| Oct 7, 2025 00:09 | CPPg++13.3.0 | Error | |||
| Oct 7, 2025 00:06 | CPPg++13.3.0 | Error | |||
| Oct 7, 2025 00:04 | CPPg++13.3.0 | Error | |||
| Oct 7, 2025 00:03 | RUSTrust-1.90.0 | Success | 11,430+190.70 RP | ||
| Oct 7, 2025 00:02 | CPPg++13.3.0 | Error | |||
| Oct 6, 2025 17:47 | CPPclang++18.1.3 | Success | 71,976 | ||
| Oct 6, 2025 17:41 | CPPclang++18.1.3 | Success | 71,408 | ||
| Oct 6, 2025 17:22 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 17:16 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 17:11 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 17:08 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 17:05 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 17:02 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 16:58 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 16:55 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 16:52 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 16:49 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 16:45 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 16:39 | CPPclang++18.1.3 | Success | 79,982 | ||
| Oct 6, 2025 16:33 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 16:28 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 16:23 | CPPg++13.3.0 | Success | 73,896 | ||
| Oct 6, 2025 11:44 | CPPclang++18.1.3 | Success | 72,291 | ||
| Oct 6, 2025 11:39 | CPPclang++18.1.3 | Success | 69,305 | ||
| Oct 6, 2025 11:38 | CPPg++13.3.0 | Success | 69,912 | ||
| Oct 6, 2025 11:37 | CPPclang++18.1.3 | Success | 66,674+7.66 RP | ||
| Oct 6, 2025 11:35 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 11:33 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 11:32 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 11:30 | CPPclang++18.1.3 | Error | |||
| Oct 6, 2025 11:26 | CPPclang++18.1.3 | Success | 68,423+6.48 RP | ||
| Oct 6, 2025 11:19 | CPPclang++18.1.3 | Success | 72,686 | ||
| Oct 6, 2025 11:13 | CPPg++13.3.0 | Success | 69,976+7.54 RP | ||
| Oct 6, 2025 11:09 | CPPg++13.3.0 | Success | 73,419 | ||
| Oct 6, 2025 11:08 | CPPg++13.3.0 | Success | 72,112 | ||
| Oct 6, 2025 10:59 | CPPg++13.3.0 | Success | 71,870+1.12 RP | ||
| Oct 6, 2025 10:58 | CPPg++13.3.0 | Success | 72,158+120.42 RP | ||
| Oct 6, 2025 10:35 | CPPg++13.3.0 | Error | |||
| Oct 6, 2025 10:34 | CPPg++13.3.0 | Success | 442,436 | ||
| Oct 6, 2025 10:33 | CPPg++13.3.0 | Error | |||
| Oct 6, 2025 10:30 | CPPg++13.3.0 | Error | |||
| Oct 6, 2025 10:25 | CPPg++13.3.0 | Error | |||
| Oct 6, 2025 10:25 | CPPg++13.3.0 | Error | |||
| Oct 6, 2025 10:23 | CPPg++13.3.0 | Error | |||
| Oct 6, 2025 10:17 | CPPg++13.3.0 | Success | 162,346 | ||
| Oct 6, 2025 10:11 | CPPg++13.3.0 | Error | |||
| Oct 6, 2025 09:44 | CPPg++13.3.0 | Success | 147,265 | ||
| Oct 6, 2025 09:37 | CPPg++13.3.0 | Success | 160,703 | ||
| Oct 5, 2025 23:29 | RUSTrust-1.90.0 | Error | |||
| Oct 5, 2025 23:19 | RUSTrust-1.90.0 | Error | |||
| Oct 5, 2025 20:56 | CPPg++13.3.0 | Success | 138,888+0.02 RP | ||
| Oct 5, 2025 20:33 | CPPg++13.3.0 | Success | 156,455 | ||
| Oct 5, 2025 20:30 | CPPg++13.3.0 | Success | 143,926 | ||
| Oct 5, 2025 20:27 | CPPg++13.3.0 | Success | 138,926+0.56 RP | ||
| Oct 5, 2025 20:22 | CPPg++13.3.0 | Success | 410,838 | ||
| Oct 5, 2025 20:21 | CPPg++13.3.0 | Success | 247,332 | ||
| Oct 5, 2025 20:18 | CPPg++13.3.0 | Success | 140,023+11.15 RP | ||
| Oct 5, 2025 20:16 | CPPg++13.3.0 | Success | 181,529 | ||
| Oct 5, 2025 20:13 | CPPg++13.3.0 | Success | 176,419 | ||
| Oct 5, 2025 20:10 | CPPg++13.3.0 | Success | 195,103 | ||
| Oct 5, 2025 20:05 | CPPg++13.3.0 | Success | 165,940+3.88 RP | ||
| Oct 5, 2025 20:03 | CPPg++13.3.0 | Success | 443,509 | ||
| Oct 5, 2025 20:01 | CPPg++13.3.0 | Error | |||
| Oct 5, 2025 19:41 | CPPg++13.3.0 | Success | 180,773 | ||
| Oct 5, 2025 19:39 | CPPg++13.3.0 | Error | |||
| Oct 5, 2025 19:34 | CPPg++13.3.0 | Success | 458,079 | ||
| Oct 5, 2025 19:32 | CPPg++13.3.0 | Error | |||
| Oct 5, 2025 19:26 | CPPg++13.3.0 | Success | 184,498 | ||
| Oct 5, 2025 19:20 | CPPg++13.3.0 | Success | 307,788 | ||
| Oct 5, 2025 19:07 | CPPg++13.3.0 | Error | |||
| Oct 5, 2025 19:07 | CPPg++13.3.0 | Error | |||
| Oct 5, 2025 19:04 | CPPg++13.3.0 | Success | 192,313 | ||
| Oct 5, 2025 19:00 | CPPg++13.3.0 | Success | 223,866 | ||
| Oct 5, 2025 18:54 | CPPg++13.3.0 | Success | 177,354+17.97 RP | ||
| Oct 5, 2025 18:52 | CPPclang++18.1.3 | Success | 122,344 | ||
| Oct 5, 2025 18:50 | CPPg++13.3.0 | Success | 260,316+21.67 RP | ||
| Oct 5, 2025 18:44 | CPPg++13.3.0 | Success | 597,281+16.74 RP |