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 19:48 | 2,316 | 64,622,947 | 26,092,000 | 4,014,000 | 2,383,872 | ||
| 2 | Mar 20, 2026 19:36 | 2,316 | 54,362,870 | 25,090,000 | 5,018,000 | 2,265,088 | ||
| 3 | Mar 20, 2026 19:37 | 2,324 | 56,573,993 | 24,168,000 | 6,042,000 | 2,408,448 | ||
| 4 | Mar 20, 2026 19:36 | 2,325 | 56,915,566 | 25,183,000 | 5,036,000 | 2,408,448 | ||
| 5 | Mar 20, 2026 19:37 | 2,380 | 59,231,531 | 26,950,000 | 3,992,000 | 2,338,816 | ||
| 6 | Mar 20, 2026 19:37 | 2,395 | 56,391,352 | 29,131,000 | 2,009,000 | 2,433,024 | ||
| 7 | Mar 20, 2026 19:36 | 2,396 | 60,727,141 | 27,129,000 | 4,019,000 | 2,494,464 | ||
| 8 | Mar 20, 2026 19:48 | 2,403 | 58,977,368 | 27,207,000 | 4,030,000 | 2,486,272 | ||
| 9 | Mar 20, 2026 19:36 | 2,420 | 55,164,268 | 26,381,000 | 5,073,000 | 2,461,696 | ||
| 10 | Mar 20, 2026 19:36 | 2,439 | 54,058,451 | 27,613,000 | 4,090,000 | 2,392,064 | ||
| 11 | Mar 20, 2026 19:37 | 2,439 | 53,996,824 | 28,640,000 | 3,068,000 | 2,392,064 | ||
| 12 | Mar 20, 2026 19:37 | 2,440 | 59,217,532 | 26,600,000 | 5,115,000 | 2,428,928 | ||
| 13 | Mar 20, 2026 19:48 | 2,454 | 61,452,013 | 27,915,000 | 3,987,000 | 2,289,664 | ||
| 14 | Mar 20, 2026 19:48 | 2,457 | 55,653,660 | 24,954,000 | 6,987,000 | 2,318,336 | ||
| 15 | Mar 20, 2026 19:48 | 2,459 | 57,757,283 | 25,969,000 | 5,992,000 | 2,482,176 | ||
| 16 | Mar 20, 2026 19:48 | 2,483 | 57,495,805 | 28,239,000 | 4,034,000 | 2,322,432 | ||
| 17 | Mar 20, 2026 19:37 | 2,487 | 60,187,822 | 26,272,000 | 6,062,000 | 2,404,352 | ||
| 18 | Mar 20, 2026 19:37 | 2,499 | 62,434,895 | 26,393,000 | 6,090,000 | 2,322,432 | ||
| 19 | Mar 20, 2026 19:48 | 2,506 | 60,608,776 | 26,467,000 | 6,107,000 | 2,449,408 | ||
| 20 | Mar 20, 2026 19:36 | 2,512 | 55,594,034 | 27,551,000 | 5,102,000 | 2,433,024 | ||
| 21 | Mar 20, 2026 19:36 | 2,515 | 60,231,273 | 29,635,000 | 3,065,000 | 2,506,752 | ||
| 22 | Mar 20, 2026 19:36 | 2,530 | 62,561,966 | 29,906,000 | 2,990,000 | 2,424,832 | ||
| 23 | Mar 20, 2026 19:37 | 2,546 | 59,122,845 | 27,083,000 | 6,018,000 | 2,387,968 | ||
| 24 | Mar 20, 2026 19:48 | 2,560 | 63,471,871 | 30,256,000 | 3,025,000 | 2,289,664 | ||
| 25 | Mar 20, 2026 19:37 | 2,585 | 60,513,038 | 28,513,000 | 5,091,000 | 2,420,736 | ||
| 26 | Mar 20, 2026 19:48 | 2,607 | 60,717,978 | 26,919,000 | 6,978,000 | 2,351,104 | ||
| 27 | Mar 20, 2026 19:36 | 2,615 | 65,534,668 | 31,992,000 | 1,999,000 | 2,449,408 | ||
| 28 | Mar 20, 2026 19:36 | 2,700 | 55,119,466 | 32,088,000 | 3,008,000 | 2,465,792 | ||
| 29 | Mar 20, 2026 19:36 | 2,759 | 64,215,598 | 32,958,000 | 2,908,000 | 2,260,992 | ||
| 30 | Mar 20, 2026 19:36 | 2,767 | 77,306,346 | 29,972,000 | 5,994,000 | 2,269,184 |