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 13, 2026 10:04Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Aug 13, 2026 09:56Yehor BondarYehor BondarCPPg++14.2.0Success8,480
Aug 13, 2026 09:51Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Aug 13, 2026 09:44Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,153
Aug 13, 2026 09:42Yehor BondarYehor BondarCPPclang++20.1.2Success8,275
Aug 13, 2026 09:30Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,003
Aug 13, 2026 09:19Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,011
Aug 13, 2026 09:18Yehor BondarYehor BondarCPPclang++20.1.2Success8,269
Aug 13, 2026 09:09Yehor BondarYehor BondarCPPclang++20.1.2Success8,268+1'089.27 RP
Aug 13, 2026 08:47Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,263
Aug 13, 2026 08:16Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success3,975+5.68 RP
Aug 13, 2026 08:11Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success3,984+26.19 RP
Aug 13, 2026 02:23Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,026+51.95 RP
Aug 13, 2026 02:17Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,112+32.10 RP
Aug 13, 2026 02:14Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,167+71.52 RP
Aug 13, 2026 02:09Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,375
Aug 13, 2026 02:00Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,295+179.60 RP
Aug 13, 2026 01:55Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success5,061
Aug 13, 2026 01:49Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success5,108
Aug 13, 2026 01:44Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,730
Aug 13, 2026 01:40Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,787
Aug 13, 2026 01:34Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,654+61.88 RP
Aug 13, 2026 01:26Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success4,792+43.49 RP
Aug 12, 2026 15:47Yehor BondarYehor BondarCPPg++14.2.0Success84,790
Aug 12, 2026 15:26Yehor BondarYehor BondarCPPclang++20.1.2Success83,184+120.22 RP
Aug 11, 2026 20:27Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Success47,921
Aug 11, 2026 20:24Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Error
Aug 11, 2026 19:40Yuriy LyfenkoYuriy LyfenkoCPPg++11.5.0Error
Aug 11, 2026 18:39Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Success65,143
Aug 11, 2026 18:34Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Error
Aug 11, 2026 18:32Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Error
Aug 11, 2026 18:28Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Error
Aug 11, 2026 18:26Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Error
Aug 11, 2026 18:22Yuriy LyfenkoYuriy LyfenkoCPPg++11.5.0Error
Aug 11, 2026 18:16Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Success12,959
Aug 11, 2026 18:11Yuriy LyfenkoYuriy LyfenkoCPPg++11.5.0Error
Aug 11, 2026 18:08Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Success11,887+288.04 RP
Aug 11, 2026 18:05Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Error
Aug 11, 2026 17:58Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Success51,627
Aug 11, 2026 17:52Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Success18,487
Aug 11, 2026 17:47Yuriy LyfenkoYuriy LyfenkoCPPg++10.5.0Success18,076+433.00 RP
Aug 11, 2026 17:43Yuriy LyfenkoYuriy LyfenkoCPPg++11.5.0Success83,179+125.22 RP
Aug 11, 2026 16:38Bernard TeoBernard TeoCPPg++10.5.0Success7,540
Aug 11, 2026 16:31Bernard TeoBernard TeoCPPg++10.5.0Success7,476+13.81 RP
Aug 11, 2026 16:28Bernard TeoBernard TeoCPPg++10.5.0Success7,579
Aug 11, 2026 16:27Bernard TeoBernard TeoCPPg++10.5.0Error
Aug 11, 2026 16:24Bernard TeoBernard TeoCPPg++10.5.0Error
Aug 11, 2026 16:23Bernard TeoBernard TeoCPPg++10.5.0Error
Aug 11, 2026 16:10Bernard TeoBernard TeoCPPg++10.5.0Success7,554+24.76 RP
Aug 11, 2026 16:10Bernard TeoBernard TeoCPPg++10.5.0Success7,698+79.08 RP
Aug 11, 2026 16:09Bernard TeoBernard TeoCPPg++10.5.0Success8,197+70.80 RP
Aug 11, 2026 16:09Bernard TeoBernard TeoCPPg++10.5.0Success8,702+140.49 RP
Aug 11, 2026 15:59Bernard TeoBernard TeoCPPg++10.5.0Success9,915
Aug 11, 2026 15:57Bernard TeoBernard TeoCPPg++10.5.0Error
Aug 11, 2026 15:41Bernard TeoBernard TeoCPPg++10.5.0Success9,914+131.02 RP
Aug 11, 2026 15:21Bernard TeoBernard TeoCPPg++10.5.0Success11,405
Aug 11, 2026 15:21Bernard TeoBernard TeoCPPg++10.5.0Success11,394+754.60 RP
Aug 11, 2026 15:18Bernard TeoBernard TeoCPPg++10.5.0Error
Aug 11, 2026 15:18Bernard TeoBernard TeoCPPg++10.5.0Error
Aug 11, 2026 14:55Bernard TeoBernard TeoCPPclang++20.1.2Success81,635
Aug 11, 2026 14:54Bernard TeoBernard TeoCPPg++14.2.0Success83,003
Aug 11, 2026 14:54Bernard TeoBernard TeoCPPg++13.3.0Success82,306
Aug 11, 2026 14:54Bernard TeoBernard TeoCPPg++12.4.0Success82,637
Aug 11, 2026 14:54Bernard TeoBernard TeoCPPg++11.5.0Success81,264+2.46 RP
Aug 11, 2026 14:53Bernard TeoBernard TeoCPPg++10.5.0Success82,921+125.60 RP
Aug 11, 2026 07:15DanielDanielRUSTrust-1.95.0Error
Aug 11, 2026 07:11DanielDanielRUSTrust-1.95.0Success44,896+227.74 RP
Aug 10, 2026 18:07Yurkov AlekseyYurkov AlekseyCPPg++10.5.0Success8,532+373.21 RP
Aug 10, 2026 17:51Yurkov AlekseyYurkov AlekseyCPPg++10.5.0Success12,518+145.31 RP
Aug 10, 2026 12:19Josu San MartinJosu San MartinCPPg++14.2.0Success4,060
Aug 10, 2026 09:05Josu San MartinJosu San MartinCPPg++13.3.0Success2,977
Aug 10, 2026 08:58Josu San MartinJosu San MartinRUSTrust-1.95.0Success2,968+9.07 RP
Aug 10, 2026 08:54Josu San MartinJosu San MartinRUSTrust-1.95.0Success2,974+1.13 RP
Aug 10, 2026 08:48Josu San MartinJosu San MartinCPPg++14.2.0Success2,970+11.32 RP
Aug 10, 2026 08:45Josu San MartinJosu San MartinRUSTrust-1.95.0Success2,980
Aug 10, 2026 08:43Josu San MartinJosu San MartinCPPg++14.2.0Success2,975+4.52 RP
Aug 10, 2026 08:41Josu San MartinJosu San MartinRUSTrust-1.95.0Success2,996
Aug 10, 2026 08:40Josu San MartinJosu San MartinCPPg++14.2.0Success2,979
Aug 10, 2026 08:36Josu San MartinJosu San MartinCPPg++14.2.0Success2,981
Aug 10, 2026 08:33Josu San MartinJosu San MartinCPPg++13.3.0Success2,977
Aug 10, 2026 08:29Josu San MartinJosu San MartinRUSTrust-1.95.0Success3,016
Aug 10, 2026 08:24Josu San MartinJosu San MartinRUSTrust-1.95.0Success3,048
Aug 10, 2026 08:22Josu San MartinJosu San MartinCPPg++14.2.0Success2,981
Aug 10, 2026 08:14Josu San MartinJosu San MartinCPPg++14.2.0Success2,977
Aug 10, 2026 08:12Josu San MartinJosu San MartinRUSTrust-1.95.0Success3,159
Aug 10, 2026 08:07Josu San MartinJosu San MartinCPPg++14.2.0Success2,977+43.47 RP
Aug 10, 2026 07:53Josu San MartinJosu San MartinCPPg++14.2.0Success3,015+12.06 RP
Aug 10, 2026 07:51Josu San MartinJosu San MartinCPPg++14.2.0Success3,028
Aug 10, 2026 07:48Josu San MartinJosu San MartinCPPg++14.2.0Success3,043
Aug 10, 2026 07:46Josu San MartinJosu San MartinCPPg++14.2.0Success3,110
Aug 10, 2026 07:39Josu San MartinJosu San MartinCPPg++14.2.0Success3,028
Aug 10, 2026 07:37Josu San MartinJosu San MartinCPPg++14.2.0Success3,026+236.27 RP
Aug 10, 2026 07:19Josu San MartinJosu San MartinCPPg++14.2.0Success3,259+26.14 RP
Aug 10, 2026 07:18Josu San MartinJosu San MartinCPPg++10.5.0Success3,379
Aug 10, 2026 07:11Josu San MartinJosu San MartinCPPg++14.2.0Success3,295
Aug 10, 2026 07:08Josu San MartinJosu San MartinCPPg++14.2.0Success3,297
Aug 10, 2026 07:06Josu San MartinJosu San MartinCPPg++14.2.0Success3,300
Aug 10, 2026 07:03Josu San MartinJosu San MartinCPPg++14.2.0Success3,287+16.57 RP
Aug 10, 2026 06:58Josu San MartinJosu San MartinCPPg++14.2.0Success3,307
Aug 10, 2026 06:52Josu San MartinJosu San MartinCPPg++14.2.0Success3,306