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 | |
|---|---|---|---|---|---|
| Jun 6, 2026 22:27 | CPPclang++18.1.3 | Success | 60,060+35.99 RP | ||
| Jun 6, 2026 22:19 | CPPclang++18.1.3 | Success | 108,349 | ||
| Jun 6, 2026 22:14 | CPPclang++18.1.3 | Success | 76,621+86.73 RP | ||
| Jun 6, 2026 22:09 | CPPclang++18.1.3 | Success | 245,962 | ||
| Jun 6, 2026 22:06 | CPPclang++18.1.3 | Success | 240,515 | ||
| Jun 6, 2026 22:01 | CPPclang++18.1.3 | Success | 228,427+0.10 RP | ||
| Jun 6, 2026 21:58 | CPPclang++18.1.3 | Success | 228,933+0.15 RP | ||
| Jun 6, 2026 21:52 | CPPclang++18.1.3 | Success | 229,739+3.89 RP | ||
| Jun 6, 2026 21:45 | CPPclang++18.1.3 | Error | |||
| Jun 6, 2026 21:38 | CPPclang++18.1.3 | Success | 252,266+4.41 RP | ||
| Jun 6, 2026 21:32 | CPPclang++18.1.3 | Success | 283,860+0.80 RP | ||
| Jun 6, 2026 21:27 | CPPclang++18.1.3 | Success | 290,462+3.23 RP | ||
| Jun 6, 2026 21:21 | CPPclang++18.1.3 | Success | 320,536+31.20 RP | ||
| Jun 6, 2026 21:18 | CPPclang++18.1.3 | Error | |||
| Jun 6, 2026 17:57 | CPPclang++18.1.3 | Success | 1,562 | ||
| Jun 6, 2026 17:52 | CPPclang++18.1.3 | Success | 1,518 | ||
| Jun 6, 2026 17:47 | CPPclang++18.1.3 | Success | 1,501+235.44 RP | ||
| Jun 6, 2026 17:42 | CPPclang++18.1.3 | Success | 1,528+152.40 RP | ||
| Jun 6, 2026 17:37 | CPPclang++18.1.3 | Error | |||
| Jun 6, 2026 17:32 | CPPclang++18.1.3 | Success | 1,657 | ||
| Jun 6, 2026 17:27 | CPPclang++18.1.3 | Success | 1,650 | ||
| Jun 6, 2026 17:22 | CPPclang++18.1.3 | Success | 1,556 | ||
| Jun 6, 2026 17:17 | CPPclang++18.1.3 | Success | 1,546+16.72 RP | ||
| Jun 6, 2026 17:12 | CPPclang++18.1.3 | Success | 1,601 | ||
| Jun 6, 2026 17:04 | CPPclang++18.1.3 | Success | 1,800 | ||
| Jun 5, 2026 21:03 | CPPclang++18.1.3 | Success | 1,555 | ||
| Jun 5, 2026 20:58 | CPPclang++18.1.3 | Success | 1,551 | ||
| Jun 5, 2026 20:53 | CPPclang++18.1.3 | Success | 1,553 | ||
| Jun 5, 2026 20:48 | CPPclang++18.1.3 | Success | 1,610 | ||
| Jun 5, 2026 20:43 | CPPclang++18.1.3 | Success | 1,548+213.42 RP | ||
| Jun 5, 2026 20:38 | CPPclang++18.1.3 | Success | 1,574+112.02 RP | ||
| Jun 5, 2026 20:33 | CPPclang++18.1.3 | Success | 1,645 | ||
| Jun 5, 2026 20:28 | CPPclang++18.1.3 | Success | 1,588+39.54 RP | ||
| Jun 5, 2026 20:23 | CPPclang++18.1.3 | Success | 2,982 | ||
| Jun 5, 2026 20:16 | CPPclang++18.1.3 | Success | 1,683 | ||
| Jun 5, 2026 20:11 | CPPclang++18.1.3 | Success | 1,641 | ||
| Jun 5, 2026 20:05 | CPPclang++18.1.3 | Success | 1,702 | ||
| Jun 5, 2026 20:00 | CPPclang++18.1.3 | Success | 1,599 | ||
| Jun 4, 2026 22:41 | CPPclang++18.1.3 | Success | 1,720 | ||
| Jun 4, 2026 22:36 | CPPclang++18.1.3 | Success | 1,750 | ||
| Jun 4, 2026 22:31 | CPPclang++18.1.3 | Success | 1,594 | ||
| Jun 4, 2026 22:26 | CPPclang++18.1.3 | Error | |||
| Jun 4, 2026 22:21 | CPPclang++18.1.3 | Success | 1,678 | ||
| Jun 4, 2026 22:16 | CPPclang++18.1.3 | Success | 1,625 | ||
| Jun 4, 2026 22:11 | CPPclang++18.1.3 | Error | |||
| Jun 4, 2026 22:06 | CPPclang++18.1.3 | Success | 2,897 | ||
| Jun 4, 2026 22:01 | CPPclang++18.1.3 | Success | 1,612 | ||
| Jun 4, 2026 21:56 | CPPclang++18.1.3 | Success | 1,616 | ||
| Jun 4, 2026 21:51 | CPPclang++18.1.3 | Success | 1,663 | ||
| Jun 4, 2026 21:46 | CPPclang++18.1.3 | Success | 1,593+163.36 RP | ||
| Jun 4, 2026 21:40 | CPPclang++18.1.3 | Success | 1,644 | ||
| Jun 4, 2026 21:35 | CPPclang++18.1.3 | Success | 1,614+465.39 RP | ||
| Jun 4, 2026 21:29 | CPPclang++18.1.3 | Success | 1,805 | ||
| Jun 4, 2026 21:24 | CPPclang++18.1.3 | Error | |||
| Jun 4, 2026 21:19 | CPPclang++18.1.3 | Success | 1,812 | ||
| May 22, 2026 22:10 | CPPclang++17.0.6 | Success | 5,316 | ||
| May 22, 2026 22:06 | CPPclang++17.0.6 | Success | 5,221 | ||
| May 22, 2026 22:03 | CPPclang++17.0.6 | Success | 5,265 | ||
| May 22, 2026 22:01 | CPPclang++17.0.6 | Success | 5,402 | ||
| May 22, 2026 21:58 | CPPclang++17.0.6 | Success | 5,213+54.00 RP | ||
| May 22, 2026 21:54 | CPPclang++17.0.6 | Success | 5,364+52.03 RP | ||
| May 22, 2026 21:50 | CPPclang++17.0.6 | Success | 5,518+31.94 RP | ||
| May 22, 2026 16:29 | CPPclang++17.0.6 | Success | 5,617+234.95 RP | ||
| May 22, 2026 16:24 | CPPclang++17.0.6 | Success | 6,618 | ||
| May 22, 2026 16:21 | CPPclang++19.1.1 | Success | 6,638 | ||
| May 22, 2026 16:20 | CPPclang++18.1.3 | Success | 6,824 | ||
| May 22, 2026 16:15 | CPPclang++17.0.6 | Success | 6,594 | ||
| May 22, 2026 16:10 | CPPclang++17.0.6 | Success | 7,230 | ||
| May 22, 2026 14:22 | CPPclang++17.0.6 | Success | 6,728 | ||
| May 22, 2026 14:21 | CPPclang++17.0.6 | Success | 6,535 | ||
| May 22, 2026 14:19 | CPPclang++17.0.6 | Success | 6,900 | ||
| May 22, 2026 14:17 | CPPclang++17.0.6 | Success | 6,798 | ||
| May 22, 2026 14:15 | CPPclang++17.0.6 | Success | 7,014 | ||
| May 20, 2026 14:54 | CPPclang++17.0.6 | Success | 7,111 | ||
| May 20, 2026 14:52 | CPPclang++17.0.6 | Success | 6,688 | ||
| May 20, 2026 14:51 | CPPclang++17.0.6 | Success | 6,751 | ||
| May 20, 2026 14:50 | CPPclang++17.0.6 | Success | 6,577 | ||
| May 20, 2026 14:48 | CPPclang++17.0.6 | Success | 6,648 | ||
| May 20, 2026 14:47 | CPPclang++17.0.6 | Success | 6,688 | ||
| May 20, 2026 14:45 | CPPclang++17.0.6 | Success | 6,471+35.47 RP | ||
| May 20, 2026 14:44 | CPPclang++17.0.6 | Success | 6,623+10.41 RP | ||
| May 20, 2026 14:43 | CPPclang++17.0.6 | Success | 6,800 | ||
| May 20, 2026 14:41 | CPPclang++17.0.6 | Success | 6,883 | ||
| May 20, 2026 14:39 | CPPclang++17.0.6 | Success | 6,669+7.83 RP | ||
| May 20, 2026 14:37 | CPPclang++17.0.6 | Success | 6,704+2.44 RP | ||
| May 20, 2026 14:35 | CPPclang++17.0.6 | Success | 6,734 | ||
| May 20, 2026 14:32 | CPPclang++17.0.6 | Success | 7,191 | ||
| May 20, 2026 14:29 | CPPclang++17.0.6 | Success | 6,715+8.38 RP | ||
| May 20, 2026 14:28 | CPPclang++17.0.6 | Success | 6,796 | ||
| May 20, 2026 12:04 | CSHARP10.0.7 | Success | 1,775+411.87 RP | ||
| May 20, 2026 11:53 | RUSTrust-1.95.0 | Success | 1,648+920.29 RP | ||
| May 20, 2026 11:43 | GOgo1.26.2 | Success | 1,707+782.09 RP | ||
| May 20, 2026 11:07 | CPPclang++18.1.3 | Success | 1,707+838.15 RP | ||
| May 18, 2026 17:02 | CPPclang++17.0.6 | Success | 6,753+47.54 RP | ||
| May 18, 2026 01:04 | CPPclang++17.0.6 | Success | 8,972 | ||
| May 18, 2026 01:04 | CPPclang++17.0.6 | Success | 8,487 | ||
| May 18, 2026 01:04 | CPPclang++17.0.6 | Success | 8,409 | ||
| May 18, 2026 00:36 | CPPclang++19.1.1 | Success | 7,300 | ||
| May 18, 2026 00:36 | CPPclang++17.0.6 | Success | 7,153 | ||
| May 18, 2026 00:36 | CPPclang++17.0.6 | Success | 7,058 |