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
Source code access is restricted. Log in to request access.
No challenges yet.
| # | Date | Score | Wall Time | CPU User | CPU System | Memory | Error | |
|---|---|---|---|---|---|---|---|---|
| 1 | Mar 20, 2026 04:47 | 3,184 | 66,190,553 | 37,358,000 | 4,038,000 | 2,445,312 | ||
| 2 | Mar 20, 2026 04:59 | 3,198 | 72,349,358 | 36,502,000 | 5,069,000 | 2,400,256 | ||
| 3 | Mar 20, 2026 04:47 | 3,216 | 69,277,749 | 36,826,000 | 4,976,000 | 2,428,928 | ||
| 4 | Mar 20, 2026 04:59 | 3,271 | 69,803,246 | 38,476,000 | 4,050,000 | 2,400,256 | ||
| 5 | Mar 20, 2026 04:47 | 3,317 | 67,723,943 | 37,099,000 | 6,016,000 | 2,310,144 | ||
| 6 | Mar 20, 2026 04:47 | 3,341 | 69,882,032 | 38,379,000 | 5,049,000 | 2,359,296 | ||
| 7 | Mar 20, 2026 04:59 | 3,361 | 67,285,317 | 39,631,000 | 4,064,000 | 2,523,136 | ||
| 8 | Mar 20, 2026 04:59 | 3,376 | 68,370,154 | 40,895,000 | 2,992,000 | 2,375,680 | ||
| 9 | Mar 20, 2026 04:47 | 3,383 | 72,918,274 | 41,052,000 | 2,932,000 | 2,506,752 | ||
| 10 | Mar 20, 2026 04:47 | 3,390 | 74,758,142 | 38,065,000 | 6,010,000 | 2,510,848 | ||
| 11 | Mar 20, 2026 04:47 | 3,466 | 75,642,314 | 41,057,000 | 4,005,000 | 2,404,352 | ||
| 12 | Mar 20, 2026 04:47 | 3,469 | 72,821,554 | 39,084,000 | 6,012,000 | 2,494,464 | ||
| 13 | Mar 20, 2026 04:47 | 3,488 | 73,103,493 | 38,289,000 | 7,053,000 | 2,375,680 | ||
| 14 | Mar 20, 2026 04:47 | 3,489 | 67,280,286 | 41,330,000 | 4,032,000 | 2,359,296 | ||
| 15 | Mar 20, 2026 04:47 | 3,504 | 73,955,744 | 40,493,000 | 5,061,000 | 2,453,504 | ||
| 16 | Mar 20, 2026 04:47 | 3,510 | 69,350,429 | 43,601,000 | 2,027,000 | 2,392,064 | ||
| 17 | Mar 20, 2026 04:59 | 3,549 | 71,735,648 | 42,128,000 | 4,012,000 | 2,469,888 | ||
| 18 | Mar 20, 2026 04:59 | 3,554 | 71,269,656 | 42,187,000 | 4,017,000 | 2,416,640 | ||
| 19 | Mar 20, 2026 04:59 | 3,569 | 74,060,172 | 40,345,000 | 6,051,000 | 2,351,104 | ||
| 20 | Mar 20, 2026 04:47 | 3,588 | 75,394,801 | 43,606,000 | 3,042,000 | 2,367,488 | ||
| 21 | Mar 20, 2026 04:59 | 3,608 | 72,003,982 | 43,914,000 | 2,994,000 | 2,400,256 | ||
| 22 | Mar 20, 2026 04:59 | 3,611 | 72,814,688 | 43,942,000 | 2,996,000 | 2,457,600 | ||
| 23 | Mar 20, 2026 04:47 | 3,614 | 71,576,405 | 42,987,000 | 3,998,000 | 2,510,848 | ||
| 24 | Mar 20, 2026 04:47 | 3,617 | 72,035,736 | 43,015,000 | 4,001,000 | 2,400,256 | ||
| 25 | Mar 20, 2026 04:47 | 3,646 | 68,315,167 | 43,369,000 | 4,034,000 | 2,412,544 | ||
| 26 | Mar 20, 2026 04:59 | 3,670 | 70,906,645 | 42,640,000 | 5,076,000 | 2,408,448 | ||
| 27 | Mar 20, 2026 04:59 | 3,687 | 71,773,071 | 43,938,000 | 3,994,000 | 2,392,064 | ||
| 28 | Mar 20, 2026 04:47 | 3,746 | 80,237,411 | 44,641,000 | 4,058,000 | 2,359,296 | ||
| 29 | Mar 20, 2026 04:59 | 3,895 | 81,556,875 | 48,615,000 | 2,025,000 | 2,383,872 | ||
| 30 | Mar 20, 2026 04:47 | 3,946 | 77,287,210 | 44,252,000 | 7,040,000 | 2,334,720 |