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 05:57 | 2,332 | 53,456,040 | 24,253,000 | 6,063,000 | 2,314,240 | ||
| 2 | Mar 20, 2026 05:57 | 2,387 | 57,110,658 | 24,024,000 | 7,007,000 | 2,498,560 | ||
| 3 | Mar 20, 2026 05:57 | 2,395 | 59,148,221 | 26,116,000 | 5,022,000 | 2,416,640 | ||
| 4 | Mar 20, 2026 05:57 | 2,395 | 56,931,645 | 29,125,000 | 2,008,000 | 2,465,792 | ||
| 5 | Mar 20, 2026 05:57 | 2,396 | 56,546,173 | 26,122,000 | 5,023,000 | 2,392,064 | ||
| 6 | Mar 20, 2026 05:57 | 2,412 | 63,877,276 | 27,305,000 | 4,045,000 | 2,293,760 | ||
| 7 | Mar 20, 2026 05:57 | 2,415 | 55,123,219 | 26,330,000 | 5,063,000 | 2,437,120 | ||
| 8 | Mar 20, 2026 05:57 | 2,427 | 56,093,655 | 25,443,000 | 6,106,000 | 2,416,640 | ||
| 9 | Mar 20, 2026 05:57 | 2,428 | 56,878,095 | 27,493,000 | 4,073,000 | 2,392,064 | ||
| 10 | Mar 20, 2026 05:57 | 2,433 | 60,982,626 | 28,569,000 | 3,060,000 | 2,293,760 | ||
| 11 | Mar 20, 2026 05:57 | 2,452 | 56,835,191 | 28,892,000 | 2,988,000 | 2,519,040 | ||
| 12 | Mar 20, 2026 05:57 | 2,460 | 54,795,426 | 25,985,000 | 5,996,000 | 2,330,624 | ||
| 13 | Mar 20, 2026 05:57 | 2,470 | 54,750,033 | 25,086,000 | 7,024,000 | 2,387,968 | ||
| 14 | Mar 20, 2026 05:57 | 2,477 | 57,411,181 | 28,171,000 | 4,024,000 | 2,400,256 | ||
| 15 | Mar 20, 2026 05:57 | 2,506 | 56,330,869 | 28,502,000 | 4,071,000 | 2,461,696 | ||
| 16 | Mar 20, 2026 05:57 | 2,533 | 55,294,912 | 26,941,000 | 5,986,000 | 2,539,520 | ||
| 17 | Mar 20, 2026 05:57 | 2,551 | 61,784,032 | 27,130,000 | 6,029,000 | 2,539,520 | ||
| 18 | Mar 20, 2026 05:57 | 2,562 | 64,270,008 | 29,266,000 | 4,036,000 | 2,289,664 | ||
| 19 | Mar 20, 2026 05:57 | 2,570 | 57,760,753 | 29,355,000 | 4,049,000 | 2,445,312 | ||
| 20 | Mar 20, 2026 05:57 | 2,570 | 63,158,087 | 28,345,000 | 5,061,000 | 2,428,928 | ||
| 21 | Mar 20, 2026 05:57 | 2,576 | 59,211,209 | 26,388,000 | 7,104,000 | 2,379,776 | ||
| 22 | Mar 20, 2026 05:57 | 2,584 | 63,098,835 | 27,486,000 | 6,108,000 | 2,453,504 | ||
| 23 | Mar 20, 2026 05:57 | 2,603 | 62,162,895 | 30,764,000 | 3,076,000 | 2,437,120 | ||
| 24 | Mar 20, 2026 05:57 | 2,604 | 66,607,439 | 25,887,000 | 7,965,000 | 2,330,624 | ||
| 25 | Mar 20, 2026 05:57 | 2,606 | 58,789,651 | 30,890,000 | 2,989,000 | 2,293,760 | ||
| 26 | Mar 20, 2026 05:57 | 2,621 | 58,596,851 | 29,066,000 | 5,011,000 | 2,281,472 | ||
| 27 | Mar 20, 2026 05:57 | 2,627 | 59,479,397 | 29,129,000 | 5,022,000 | 2,412,544 | ||
| 28 | Mar 20, 2026 05:57 | 2,666 | 59,519,893 | 30,585,000 | 4,078,000 | 2,367,488 | ||
| 29 | Mar 20, 2026 05:57 | 2,669 | 63,801,251 | 30,613,000 | 4,081,000 | 2,424,832 | ||
| 30 | Mar 20, 2026 05:57 | 2,674 | 58,124,480 | 29,798,000 | 4,966,000 | 2,478,080 | ||
| 31 | Mar 20, 2026 05:57 | 2,678 | 59,504,346 | 28,842,000 | 5,967,000 | 2,510,848 | ||
| 32 | Mar 20, 2026 05:57 | 2,686 | 58,834,731 | 29,929,000 | 4,988,000 | 2,383,872 | ||
| 33 | Mar 20, 2026 05:57 | 2,698 | 64,359,817 | 31,065,000 | 4,008,000 | 2,519,040 | ||
| 34 | Mar 20, 2026 05:57 | 2,734 | 64,249,691 | 32,498,000 | 3,046,000 | 2,506,752 | ||
| 35 | Mar 20, 2026 05:57 | 2,737 | 63,757,488 | 31,514,000 | 4,066,000 | 2,461,696 | ||
| 36 | Mar 20, 2026 05:57 | 2,867 | 67,208,835 | 35,251,000 | 2,014,000 | 2,441,216 |