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 12, 2025 23:06 | CPPg++13.3.0 | Success | 198,759+22.62 RP | ||
| Oct 12, 2025 22:57 | CPPg++13.3.0 | Success | 361,145+27.69 RP | ||
| Oct 12, 2025 22:56 | CPPg++13.3.0 | Error | |||
| Oct 12, 2025 22:47 | CPPg++13.3.0 | Error | |||
| Oct 12, 2025 20:33 | CPPg++13.3.0 | Error | |||
| Oct 12, 2025 20:00 | CPPg++13.3.0 | Error | |||
| Oct 12, 2025 19:46 | CPPg++13.3.0 | Success | 501,795 | ||
| Oct 12, 2025 19:38 | CPPg++13.3.0 | Success | 44,414+6.97 RP | ||
| Oct 12, 2025 19:37 | CPPg++13.3.0 | Success | 458,939 | ||
| Oct 12, 2025 19:34 | CPPclang++18.1.3 | Success | 45,832+8.86 RP | ||
| Oct 12, 2025 19:33 | CPPg++13.3.0 | Success | 67,714 | ||
| Oct 12, 2025 19:33 | RUSTrust-1.90.0 | Success | 212,202+35.30 RP | ||
| Oct 12, 2025 19:31 | CPPg++13.3.0 | Error | |||
| Oct 12, 2025 19:28 | RUSTrust-1.90.0 | Success | 845,355+0.57 RP | ||
| Oct 12, 2025 19:26 | CPPg++13.3.0 | Error | |||
| Oct 12, 2025 19:24 | CPPg++13.3.0 | Success | 91,375 | ||
| Oct 12, 2025 19:22 | RUSTrust-1.90.0 | Success | 888,125+11.26 RP | ||
| Oct 12, 2025 19:17 | CPPg++13.3.0 | Success | 56,613 | ||
| Oct 12, 2025 19:13 | CPPg++13.3.0 | Success | 51,918 | ||
| Oct 12, 2025 19:09 | CPPg++13.3.0 | Success | 49,590 | ||
| Oct 12, 2025 19:03 | RUSTrust-1.90.0 | Error | |||
| Oct 12, 2025 18:56 | CPPg++13.3.0 | Success | 47,773+3.23 RP | ||
| Oct 12, 2025 18:46 | CPPg++13.3.0 | Success | 48,522+5.60 RP | ||
| Oct 12, 2025 18:45 | CPPg++13.3.0 | Success | 51,777 | ||
| Oct 12, 2025 18:44 | CPPg++13.3.0 | Success | 50,717 | ||
| Oct 12, 2025 18:32 | CPPg++13.3.0 | Success | 49,878+51.25 RP | ||
| Oct 12, 2025 17:59 | CPPg++13.3.0 | Success | 79,674 | ||
| Oct 12, 2025 17:53 | CPPg++13.3.0 | Success | 67,006+38.42 RP | ||
| Oct 12, 2025 17:47 | CPPg++13.3.0 | Error | |||
| Oct 12, 2025 17:43 | CPPg++13.3.0 | Error | |||
| Oct 12, 2025 17:42 | CPPg++13.3.0 | Error | |||
| Oct 12, 2025 17:29 | CPPg++13.3.0 | Success | 90,237+44.31 RP | ||
| Oct 12, 2025 17:16 | CPPg++13.3.0 | Success | 272,544 | ||
| Oct 12, 2025 17:04 | CPPg++13.3.0 | Success | 151,699 | ||
| Oct 12, 2025 17:03 | CPPg++13.3.0 | Error | |||
| Oct 12, 2025 16:30 | RUSTrust-1.90.0 | Success | 6,109+18.64 RP | ||
| Oct 12, 2025 14:12 | RUSTrust-1.90.0 | Success | 6,165 | ||
| Oct 12, 2025 14:10 | RUSTrust-1.90.0 | Success | 6,353 | ||
| Oct 12, 2025 14:09 | RUSTrust-1.90.0 | Success | 6,178 | ||
| Oct 12, 2025 14:07 | RUSTrust-1.90.0 | Success | 6,410 | ||
| Oct 12, 2025 14:04 | RUSTrust-1.90.0 | Success | 6,300 | ||
| Oct 12, 2025 11:50 | RUSTrust-1.90.0 | Success | 233,148+42.89 RP | ||
| Oct 12, 2025 04:35 | RUSTrust-1.90.0 | Error | |||
| Oct 12, 2025 04:33 | RUSTrust-1.90.0 | Error | |||
| Oct 11, 2025 23:47 | CPPg++13.3.0 | Success | 156,941 | ||
| Oct 11, 2025 23:47 | CPPg++13.3.0 | Success | 150,350+0.53 RP | ||
| Oct 11, 2025 23:44 | CPPg++13.3.0 | Success | 178,548 | ||
| Oct 11, 2025 23:42 | CPPg++13.3.0 | Success | 155,643 | ||
| Oct 11, 2025 23:38 | CPPg++13.3.0 | Success | 224,891 | ||
| Oct 11, 2025 23:30 | CPPg++13.3.0 | Error | |||
| Oct 11, 2025 23:22 | CPPg++13.3.0 | Success | 172,466 | ||
| Oct 11, 2025 23:20 | CPPg++13.3.0 | Error | |||
| Oct 11, 2025 23:09 | CPPg++13.3.0 | Success | 158,018 | ||
| Oct 11, 2025 23:07 | CPPg++13.3.0 | Error | |||
| Oct 11, 2025 23:06 | CPPg++13.3.0 | Success | 179,793 | ||
| Oct 11, 2025 23:04 | CPPg++13.3.0 | Success | 151,557+12.25 RP | ||
| Oct 11, 2025 23:03 | CPPg++13.3.0 | Success | 239,668 | ||
| Oct 11, 2025 22:58 | CPPg++13.3.0 | Error | |||
| Oct 11, 2025 22:50 | CPPg++13.3.0 | Error | |||
| Oct 11, 2025 22:45 | CPPg++13.3.0 | Success | 167,102+6.33 RP | ||
| Oct 11, 2025 22:36 | CPPg++13.3.0 | Success | 186,103+11.96 RP | ||
| Oct 11, 2025 22:34 | CPPg++13.3.0 | Success | 260,980 | ||
| Oct 11, 2025 22:27 | CPPg++13.3.0 | Success | 239,389+41.77 RP | ||
| Oct 11, 2025 22:22 | CPPg++13.3.0 | Error | |||
| Oct 11, 2025 22:12 | CPPg++13.3.0 | Error | |||
| Oct 11, 2025 22:05 | CPPg++13.3.0 | Error | |||
| Oct 11, 2025 21:47 | CPPg++13.3.0 | Success | 186,882+0.09 RP | ||
| Oct 11, 2025 21:46 | CPPg++13.3.0 | Success | 191,957 | ||
| Oct 11, 2025 21:41 | CPPg++13.3.0 | Success | 187,201+31.89 RP | ||
| Oct 11, 2025 21:19 | CPPg++13.3.0 | Success | 464,505+21.53 RP | ||
| Oct 10, 2025 22:16 | RUSTrust-1.90.0 | Success | 6,567 | ||
| Oct 10, 2025 21:07 | RUSTrust-1.90.0 | Success | 6,299 | ||
| Oct 10, 2025 21:04 | RUSTrust-1.90.0 | Success | 7,576 | ||
| Oct 10, 2025 21:03 | RUSTrust-1.90.0 | Success | 7,601 | ||
| Oct 10, 2025 20:59 | RUSTrust-1.90.0 | Success | 7,525 | ||
| Oct 10, 2025 20:55 | RUSTrust-1.90.0 | Success | 7,552 | ||
| Oct 10, 2025 20:52 | RUSTrust-1.90.0 | Success | 7,648 | ||
| Oct 10, 2025 20:30 | RUSTrust-1.90.0 | Success | 6,144+243.16 RP | ||
| Oct 10, 2025 20:28 | RUSTrust-1.90.0 | Success | 7,541 | ||
| Oct 10, 2025 20:27 | RUSTrust-1.90.0 | Success | 7,755 | ||
| Oct 9, 2025 19:54 | CPPg++13.3.0 | Success | 229,424 | ||
| Oct 9, 2025 19:44 | CPPg++13.3.0 | Success | 194,488 | ||
| Oct 9, 2025 19:37 | CPPg++13.3.0 | Success | 541,573 | ||
| Oct 9, 2025 19:28 | CPPg++13.3.0 | Error | |||
| Oct 9, 2025 15:48 | CPPclang++18.1.3 | Success | 6,734 | ||
| Oct 9, 2025 15:47 | CPPclang++18.1.3 | Success | 6,655 | ||
| Oct 9, 2025 15:45 | CPPg++13.3.0 | Success | 6,930 | ||
| Oct 9, 2025 15:44 | CPPclang++18.1.3 | Success | 5,990+62.36 RP | ||
| Oct 9, 2025 15:34 | CPPclang++18.1.3 | Success | 6,244 | ||
| Oct 9, 2025 15:31 | CPPclang++18.1.3 | Success | 6,104+258.12 RP | ||
| Oct 9, 2025 15:20 | CPPclang++18.1.3 | Success | 6,658 | ||
| Oct 9, 2025 15:19 | CPPg++13.3.0 | Success | 7,237 | ||
| Oct 9, 2025 15:18 | CPPclang++18.1.3 | Success | 6,626+259.04 RP | ||
| Oct 9, 2025 14:58 | CPPclang++18.1.3 | Success | 7,248+374.18 RP | ||
| 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 |