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 21, 2026 20:03 | 2,069 | 53,025,830 | 20,919,000 | 5,977,000 | 2,408,448 | ||
| 2 | Mar 21, 2026 19:49 | 2,180 | 54,771,765 | 24,295,000 | 4,049,000 | 2,433,024 | ||
| 3 | Mar 21, 2026 19:49 | 2,180 | 54,129,546 | 26,322,000 | 2,024,000 | 2,363,392 | ||
| 4 | Mar 21, 2026 20:03 | 2,181 | 54,343,391 | 25,316,000 | 3,037,000 | 2,445,312 | ||
| 5 | Mar 21, 2026 19:53 | 2,196 | 56,575,152 | 24,469,000 | 4,078,000 | 2,297,856 | ||
| 6 | Mar 21, 2026 19:53 | 2,218 | 51,860,084 | 26,841,000 | 1,988,000 | 2,285,568 | ||
| 7 | Mar 21, 2026 19:49 | 2,225 | 52,988,769 | 22,937,000 | 5,983,000 | 2,334,720 | ||
| 8 | Mar 21, 2026 19:54 | 2,225 | 53,037,330 | 23,936,000 | 4,986,000 | 2,322,432 | ||
| 9 | Mar 21, 2026 19:54 | 2,226 | 57,395,997 | 23,954,000 | 4,990,000 | 2,502,656 | ||
| 10 | Mar 21, 2026 19:49 | 2,244 | 53,687,615 | 26,157,000 | 3,018,000 | 2,478,080 | ||
| 11 | Mar 21, 2026 19:49 | 2,249 | 55,365,245 | 23,192,000 | 6,050,000 | 2,535,424 | ||
| 12 | Mar 21, 2026 20:03 | 2,255 | 57,975,536 | 24,261,000 | 5,054,000 | 2,523,136 | ||
| 13 | Mar 21, 2026 20:03 | 2,257 | 58,637,360 | 25,295,000 | 4,047,000 | 2,359,296 | ||
| 14 | Mar 21, 2026 20:06 | 2,262 | 49,120,936 | 24,333,000 | 5,069,000 | 2,269,184 | ||
| 15 | Mar 21, 2026 20:03 | 2,274 | 63,376,391 | 24,467,000 | 5,097,000 | 2,531,328 | ||
| 16 | Mar 21, 2026 19:54 | 2,277 | 56,977,542 | 24,503,000 | 5,104,000 | 2,539,520 | ||
| 17 | Mar 21, 2026 19:49 | 2,277 | 51,628,912 | 24,501,000 | 5,104,000 | 2,490,368 | ||
| 18 | Mar 21, 2026 20:06 | 2,284 | 60,396,395 | 24,577,000 | 5,120,000 | 2,338,816 | ||
| 19 | Mar 21, 2026 20:03 | 2,295 | 56,852,707 | 24,864,000 | 4,972,000 | 2,375,680 | ||
| 20 | Mar 21, 2026 20:06 | 2,301 | 54,377,623 | 25,926,000 | 3,988,000 | 2,367,488 | ||
| 21 | Mar 21, 2026 19:53 | 2,313 | 54,827,969 | 27,068,000 | 3,007,000 | 2,375,680 | ||
| 22 | Mar 21, 2026 19:49 | 2,319 | 57,934,070 | 26,126,000 | 4,019,000 | 2,482,176 | ||
| 23 | Mar 21, 2026 20:03 | 2,329 | 54,824,563 | 27,251,000 | 3,027,000 | 2,510,848 | ||
| 24 | Mar 21, 2026 20:06 | 2,338 | 62,211,678 | 28,373,000 | 2,026,000 | 2,523,136 | ||
| 25 | Mar 21, 2026 19:49 | 2,339 | 57,250,476 | 26,356,000 | 4,054,000 | 2,400,256 | ||
| 26 | Mar 21, 2026 19:49 | 2,349 | 58,029,251 | 26,465,000 | 4,071,000 | 2,404,352 | ||
| 27 | Mar 21, 2026 20:03 | 2,374 | 56,560,577 | 25,882,000 | 4,977,000 | 2,322,432 | ||
| 28 | Mar 21, 2026 19:49 | 2,385 | 62,455,504 | 29,003,000 | 2,000,000 | 2,433,024 | ||
| 29 | Mar 21, 2026 19:49 | 2,394 | 58,599,941 | 27,102,000 | 4,015,000 | 2,433,024 | ||
| 30 | Mar 21, 2026 20:03 | 2,402 | 55,362,745 | 26,188,000 | 5,036,000 | 2,367,488 | ||
| 31 | Mar 21, 2026 20:06 | 2,429 | 57,570,779 | 25,469,000 | 6,112,000 | 2,449,408 | ||
| 32 | Mar 21, 2026 19:49 | 2,436 | 67,678,338 | 29,554,000 | 2,111,000 | 2,457,600 | ||
| 33 | Mar 21, 2026 19:49 | 2,454 | 56,001,744 | 27,914,000 | 3,987,000 | 2,449,408 | ||
| 34 | Mar 21, 2026 19:54 | 2,462 | 64,452,604 | 27,001,000 | 5,000,000 | 2,498,560 | ||
| 35 | Mar 21, 2026 19:54 | 2,463 | 56,960,888 | 29,021,000 | 3,002,000 | 2,281,472 | ||
| 36 | Mar 21, 2026 19:49 | 2,478 | 61,423,379 | 26,178,000 | 6,041,000 | 2,277,376 | ||
| 37 | Mar 21, 2026 20:06 | 2,481 | 66,474,364 | 29,227,000 | 3,023,000 | 2,396,160 | ||
| 38 | Mar 21, 2026 19:49 | 2,521 | 64,827,395 | 27,812,000 | 4,966,000 | 2,392,064 | ||
| 39 | Mar 21, 2026 19:54 | 2,630 | 64,325,820 | 31,179,000 | 3,017,000 | 2,404,352 |