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:31 | 3,409 | 68,904,830 | 37,266,000 | 7,050,000 | 2,461,696 | ||
| 2 | Mar 20, 2026 04:28 | 3,416 | 75,423,334 | 41,378,000 | 3,027,000 | 2,367,488 | ||
| 3 | Mar 20, 2026 04:31 | 3,424 | 72,871,178 | 43,503,000 | 1,011,000 | 2,494,464 | ||
| 4 | Mar 20, 2026 04:31 | 3,434 | 70,865,286 | 40,579,000 | 4,057,000 | 2,502,656 | ||
| 5 | Mar 20, 2026 04:31 | 3,438 | 75,531,801 | 40,632,000 | 4,063,000 | 2,404,352 | ||
| 6 | Mar 20, 2026 04:31 | 3,461 | 73,558,556 | 39,994,000 | 4,999,000 | 2,293,760 | ||
| 7 | Mar 20, 2026 04:31 | 3,494 | 70,806,278 | 43,408,000 | 2,018,000 | 2,510,848 | ||
| 8 | Mar 20, 2026 04:31 | 3,529 | 73,793,169 | 39,897,000 | 5,984,000 | 2,502,656 | ||
| 9 | Mar 20, 2026 04:31 | 3,558 | 76,047,910 | 42,233,000 | 4,022,000 | 2,351,104 | ||
| 10 | Mar 20, 2026 04:31 | 3,559 | 75,727,640 | 42,246,000 | 4,023,000 | 2,457,600 | ||
| 11 | Mar 20, 2026 04:31 | 3,559 | 76,087,635 | 43,251,000 | 3,017,000 | 2,420,736 | ||
| 12 | Mar 20, 2026 04:28 | 3,582 | 73,993,436 | 41,509,000 | 5,062,000 | 2,273,280 | ||
| 13 | Mar 20, 2026 04:28 | 3,658 | 77,717,697 | 43,508,000 | 4,047,000 | 2,363,392 | ||
| 14 | Mar 20, 2026 04:28 | 3,662 | 74,603,521 | 42,539,000 | 5,064,000 | 2,482,176 | ||
| 15 | Mar 20, 2026 04:32 | 3,663 | 73,984,222 | 42,552,000 | 5,065,000 | 2,416,640 | ||
| 16 | Mar 20, 2026 04:31 | 3,688 | 73,609,555 | 42,950,000 | 4,994,000 | 2,322,432 | ||
| 17 | Mar 20, 2026 04:28 | 3,719 | 73,242,689 | 44,314,000 | 4,028,000 | 2,322,432 | ||
| 18 | Mar 20, 2026 04:32 | 3,743 | 75,024,572 | 46,628,000 | 2,027,000 | 2,449,408 | ||
| 19 | Mar 20, 2026 04:28 | 3,772 | 72,530,650 | 46,030,000 | 3,001,000 | 2,482,176 | ||
| 20 | Mar 20, 2026 04:32 | 3,774 | 80,008,367 | 43,055,000 | 6,007,000 | 2,433,024 | ||
| 21 | Mar 20, 2026 04:31 | 3,788 | 80,947,011 | 43,211,000 | 6,029,000 | 2,498,560 | ||
| 22 | Mar 20, 2026 04:31 | 3,865 | 75,948,354 | 45,219,000 | 5,024,000 | 2,338,816 | ||
| 23 | Mar 20, 2026 04:28 | 3,912 | 78,569,387 | 42,881,000 | 7,978,000 | 2,338,816 | ||
| 24 | Mar 20, 2026 04:31 | 3,915 | 78,925,000 | 42,910,000 | 7,983,000 | 2,478,080 | ||
| 25 | Mar 20, 2026 04:28 | 3,938 | 80,401,886 | 47,176,000 | 4,014,000 | 2,478,080 | ||
| 26 | Mar 20, 2026 04:28 | 3,993 | 78,178,598 | 45,925,000 | 5,990,000 | 2,482,176 | ||
| 27 | Mar 20, 2026 04:31 | 4,006 | 83,852,811 | 46,069,000 | 6,009,000 | 2,322,432 | ||
| 28 | Mar 20, 2026 04:31 | 4,008 | 77,910,347 | 49,103,000 | 3,006,000 | 2,473,984 | ||
| 29 | Mar 20, 2026 04:31 | 4,114 | 84,280,999 | 48,434,000 | 5,045,000 | 2,445,312 | ||
| 30 | Mar 20, 2026 04:31 | 4,460 | 83,470,677 | 52,979,000 | 4,998,000 | 2,342,912 |