Group by sum Sergey Svistunov

Aggregate 125,000,000 key/value records by key as fast as possible.

The task is equivalent to this query:

SELECT SUM(s * s) FROM (
    SELECT SUM(value) AS s FROM records GROUP BY key
)

Input

Exactly 125,000,000 records on STDIN, 8 bytes each, back to back (1,000,000,000 bytes in total):

Offset Type Field
0 uint32 little-endian key
4 uint32 little-endian value

Guarantees:

  • The records contain exactly 4,000,000 distinct keys.
  • A key is an arbitrary value in [0, 2^32) and may repeat any number of times.
  • A value is an arbitrary value in [0, 2^32).

Output

Group the records by key, sum the values of each group, then write the sum of the squares of those group sums to STDOUT as a decimal string:

answer = SUM(sum_k * sum_k) over all 4,000,000 distinct keys k

Both the squaring and the outer sum are computed modulo 2^64 (unsigned 64-bit wraparound). An individual group sum never overflows uint64.

Example

For the six records

key=7 value=10
key=3 value=4000000000
key=7 value=20
key=9 value=1
key=3 value=4000000000
key=7 value=30

the group sums are sum_7 = 60, sum_3 = 8000000000 and sum_9 = 1, so

60*60 + 8000000000*8000000000 + 1*1 = 64000000000000003601
64000000000000003601 mod 2^64       = 8659767778871348753

and the program prints 8659767778871348753.

Date AuthorLanguageStatus Score
Aug 10, 2026 01:50Josu San MartinJosu San MartinCPPg++14.2.0Success3,550+7.91 RP
Aug 10, 2026 01:31Josu San MartinJosu San MartinCPPg++14.2.0Success3,560+6.30 RP
Aug 10, 2026 01:06Josu San MartinJosu San MartinCPPg++14.2.0Success3,595
Aug 10, 2026 00:57Josu San MartinJosu San MartinCPPg++14.2.0Success3,568+157.89 RP
Aug 10, 2026 00:49Josu San MartinJosu San MartinCPPg++14.2.0Success3,781+14.61 RP
Aug 10, 2026 00:46Josu San MartinJosu San MartinCPPg++14.2.0Success3,802+32.12 RP
Aug 10, 2026 00:32Josu San MartinJosu San MartinCPPg++14.2.0Success3,849+15.43 RP
Aug 10, 2026 00:18Josu San MartinJosu San MartinCPPg++14.2.0Success3,872+3.33 RP
Aug 10, 2026 00:15Josu San MartinJosu San MartinCPPg++14.2.0Success3,883+5.00 RP
Aug 9, 2026 23:53Josu San MartinJosu San MartinCPPg++14.2.0Success3,877+9.28 RP
Aug 9, 2026 23:49Josu San MartinJosu San MartinCPPg++14.2.0Success3,906
Aug 9, 2026 23:36Josu San MartinJosu San MartinCPPg++14.2.0Success3,891
Aug 9, 2026 23:26Josu San MartinJosu San MartinCPPg++14.2.0Success3,929
Aug 9, 2026 23:15Josu San MartinJosu San MartinCPPg++14.2.0Success4,206
Aug 9, 2026 23:08Josu San MartinJosu San MartinCPPg++14.2.0Success3,907
Aug 9, 2026 23:05Josu San MartinJosu San MartinCPPg++14.2.0Success3,891+20.96 RP
Aug 9, 2026 22:45Josu San MartinJosu San MartinCPPg++14.2.0Success3,923+16.14 RP
Aug 9, 2026 22:39Josu San MartinJosu San MartinCPPg++14.2.0Success3,948+335.61 RP
Aug 9, 2026 22:34Josu San MartinJosu San MartinCPPg++14.2.0Success4,580
Aug 9, 2026 22:29Victor MerckléVictor MerckléCSHARP10.0.7Success3,010+327.35 RP
Aug 9, 2026 22:21Josu San MartinJosu San MartinCPPg++14.2.0Success4,674
Aug 9, 2026 22:20Victor MerckléVictor MerckléRUSTrust-1.95.0Success2,975+349.05 RP
Aug 9, 2026 22:15Victor MerckléVictor MerckléCPPclang++20.1.2Success2,993
Aug 9, 2026 22:11Josu San MartinJosu San MartinCPPg++14.2.0Success4,568
Aug 9, 2026 22:10Victor MerckléVictor MerckléCPPclang++20.1.2Success3,072
Aug 9, 2026 22:05Victor MerckléVictor MerckléCPPclang++20.1.2Success2,978+35.90 RP
Aug 9, 2026 22:01Victor MerckléVictor MerckléCPPclang++20.1.2Success7,553
Aug 9, 2026 21:55Josu San MartinJosu San MartinCPPg++14.2.0Success4,599
Aug 9, 2026 21:54Victor MerckléVictor MerckléZIG0.16.0Success2,998+358.48 RP
Aug 9, 2026 21:48Victor MerckléVictor MerckléCPPclang++20.1.2Success7,166
Aug 9, 2026 21:43Victor MerckléVictor MerckléGOgo1.26.2Success3,012+356.21 RP
Aug 9, 2026 21:38Josu San MartinJosu San MartinCPPg++14.2.0Success4,551+4.82 RP
Aug 9, 2026 21:35Josu San MartinJosu San MartinCPPg++14.2.0Success4,653
Aug 9, 2026 21:33Josu San MartinJosu San MartinCPPg++14.2.0Success4,862
Aug 9, 2026 21:28Josu San MartinJosu San MartinCPPg++14.2.0Success4,561+14.80 RP
Aug 9, 2026 21:24Josu San MartinJosu San MartinCPPg++14.2.0Success4,708
Aug 9, 2026 21:13Josu San MartinJosu San MartinCPPg++14.2.0Success6,506
Aug 9, 2026 21:11Yurkov AlekseyYurkov AlekseyCPPg++10.5.0Success15,185+531.47 RP
Aug 9, 2026 21:09Josu San MartinJosu San MartinCPPg++14.2.0Success4,614
Aug 9, 2026 21:06Victor MerckléVictor MerckléCPPclang++20.1.2Success4,017
Aug 9, 2026 21:05Josu San MartinJosu San MartinCPPg++14.2.0Success4,596
Aug 9, 2026 21:03Josu San MartinJosu San MartinCPPclang++20.1.2Success4,653
Aug 9, 2026 20:57Josu San MartinJosu San MartinCPPg++14.2.0Success5,567
Aug 9, 2026 20:56Victor MerckléVictor MerckléCPPclang++20.1.2Success3,129
Aug 9, 2026 20:53Josu San MartinJosu San MartinCPPg++14.2.0Success4,592+24.38 RP
Aug 9, 2026 20:48Josu San MartinJosu San MartinCPPg++14.2.0Success4,644+43.17 RP
Aug 9, 2026 20:46Yurkov AlekseyYurkov AlekseyCPPg++13.3.0Success79,834
Aug 9, 2026 20:44Victor MerckléVictor MerckléCPPclang++20.1.2Success4,712
Aug 9, 2026 20:40Yurkov AlekseyYurkov AlekseyCPPg++10.5.0Success78,691+8.89 RP
Aug 9, 2026 20:38Josu San MartinJosu San MartinCPPg++14.2.0Success4,739+288.32 RP
Aug 9, 2026 20:35Victor MerckléVictor MerckléCPPclang++20.1.2Success3,343
Aug 9, 2026 20:32Yurkov AlekseyYurkov AlekseyCPPg++10.5.0Error
Aug 9, 2026 20:30Josu San MartinJosu San MartinCPPg++14.2.0Success5,489+25.53 RP
Aug 9, 2026 20:30Yurkov AlekseyYurkov AlekseyCPPg++10.5.0Success84,613+118.19 RP
Aug 9, 2026 20:23Victor MerckléVictor MerckléCPPclang++20.1.2Success3,400
Aug 9, 2026 20:23Josu San MartinJosu San MartinCPPg++14.2.0Success5,711
Aug 9, 2026 20:17Josu San MartinJosu San MartinCPPg++14.2.0Success5,704
Aug 9, 2026 20:11Josu San MartinJosu San MartinCPPg++14.2.0Success5,567+7.71 RP
Aug 9, 2026 20:07Josu San MartinJosu San MartinCPPclang++20.1.2Success5,591+8.28 RP
Aug 9, 2026 20:03Josu San MartinJosu San MartinCPPclang++20.1.2Success5,632
Aug 9, 2026 19:55Josu San MartinJosu San MartinCPPclang++20.1.2Success5,752
Aug 9, 2026 19:46Josu San MartinJosu San MartinCPPclang++20.1.2Success5,683
Aug 9, 2026 19:42Victor MerckléVictor MerckléCPPclang++20.1.2Success2,994+68.46 RP
Aug 9, 2026 19:32Victor MerckléVictor MerckléCPPclang++20.1.2Success3,045
Aug 9, 2026 19:28Josu San MartinJosu San MartinCPPclang++20.1.2Success5,623
Aug 9, 2026 19:27Victor MerckléVictor MerckléCPPclang++20.1.2Success3,094
Aug 9, 2026 19:22Victor MerckléVictor MerckléCPPclang++20.1.2Success3,025+482.24 RP
Aug 9, 2026 19:20Josu San MartinJosu San MartinCPPclang++20.1.2Success6,082
Aug 9, 2026 19:15Victor MerckléVictor MerckléCPPclang++20.1.2Success3,263+121.42 RP
Aug 9, 2026 19:09Josu San MartinJosu San MartinCPPclang++20.1.2Success5,617+1'780.31 RP
Aug 9, 2026 18:32Victor MerckléVictor MerckléCPPclang++20.1.2Success5,427
Aug 9, 2026 18:27Victor MerckléVictor MerckléCPPclang++20.1.2Success3,493
Aug 9, 2026 18:22Victor MerckléVictor MerckléCPPclang++20.1.2Success3,713
Aug 9, 2026 18:17Victor MerckléVictor MerckléCSHARP10.0.7Success3,339+614.52 RP
Aug 9, 2026 18:12Victor MerckléVictor MerckléRUSTrust-1.95.0Success3,316+995.82 RP
Aug 9, 2026 18:07Victor MerckléVictor MerckléGOgo1.26.2Success3,374+503.82 RP
Aug 9, 2026 17:59Victor MerckléVictor MerckléZIG0.16.0Success3,359+509.16 RP
Aug 9, 2026 17:51Victor MerckléVictor MerckléCPPclang++20.1.2Success3,720
Aug 9, 2026 17:45Victor MerckléVictor MerckléCPPclang++20.1.2Success5,592
Aug 9, 2026 17:40Victor MerckléVictor MerckléCPPclang++20.1.2Success6,639
Aug 9, 2026 17:34Victor MerckléVictor MerckléCPPclang++20.1.2Success3,345
Aug 9, 2026 17:29Victor MerckléVictor MerckléCPPg++14.2.0Success3,498
Aug 9, 2026 17:24Victor MerckléVictor MerckléCPPclang++20.1.2Success3,342+10.72 RP
Aug 9, 2026 17:19Victor MerckléVictor MerckléCPPclang++20.1.2Success3,622
Aug 9, 2026 17:14Victor MerckléVictor MerckléCPPclang++20.1.2Success3,398
Aug 9, 2026 17:09Victor MerckléVictor MerckléCPPclang++20.1.2Success3,348+5.34 RP
Aug 9, 2026 17:04Victor MerckléVictor MerckléCPPclang++20.1.2Success3,351+58.20 RP
Aug 9, 2026 16:59Victor MerckléVictor MerckléCPPclang++20.1.2Success3,389
Aug 9, 2026 16:54Victor MerckléVictor MerckléCPPclang++20.1.2Success3,434
Aug 9, 2026 16:49Victor MerckléVictor MerckléCPPclang++20.1.2Success3,384+65.64 RP
Aug 9, 2026 16:44Victor MerckléVictor MerckléCPPclang++20.1.2Success5,077
Aug 9, 2026 16:39Victor MerckléVictor MerckléCPPclang++20.1.2Success3,430
Aug 9, 2026 16:34Victor MerckléVictor MerckléCPPclang++20.1.2Success3,497
Aug 9, 2026 16:29Victor MerckléVictor MerckléCPPclang++20.1.2Success3,520
Aug 9, 2026 16:24Victor MerckléVictor MerckléCPPclang++20.1.2Success3,462
Aug 9, 2026 16:19Victor MerckléVictor MerckléCPPclang++20.1.2Success3,654
Aug 9, 2026 16:14Victor MerckléVictor MerckléCPPclang++20.1.2Error
Aug 9, 2026 16:09Victor MerckléVictor MerckléCPPclang++20.1.2Success3,422+13.64 RP
Aug 9, 2026 16:04Victor MerckléVictor MerckléCPPclang++20.1.2Success3,430+269.16 RP
Aug 9, 2026 15:59Victor MerckléVictor MerckléCPPclang++20.1.2Success4,326