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 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
Aug 10, 2026 06:37Josu San MartinJosu San MartinCPPg++14.2.0Success3,332
Aug 10, 2026 06:33Josu San MartinJosu San MartinCPPg++14.2.0Success3,305+23.62 RP
Aug 10, 2026 06:18Josu San MartinJosu San MartinCPPg++14.2.0Success3,331+40.02 RP
Aug 10, 2026 05:56Josu San MartinJosu San MartinCPPg++14.2.0Success3,376+3.51 RP
Aug 10, 2026 05:46Josu San MartinJosu San MartinCPPg++14.2.0Success3,389
Aug 10, 2026 05:28Josu San MartinJosu San MartinCPPclang++20.1.2Success3,595
Aug 10, 2026 05:03Josu San MartinJosu San MartinCPPg++14.2.0Success3,411
Aug 10, 2026 04:40Josu San MartinJosu San MartinCPPg++14.2.0Success3,380+2.62 RP
Aug 10, 2026 04:30Josu San MartinJosu San MartinCPPg++14.2.0Success3,444
Aug 10, 2026 04:21Josu San MartinJosu San MartinCPPg++14.2.0Success3,385
Aug 10, 2026 04:15Josu San MartinJosu San MartinCPPg++14.2.0Success3,383+0.87 RP
Aug 10, 2026 04:09Josu San MartinJosu San MartinCPPg++14.2.0Success3,384+6.10 RP
Aug 10, 2026 04:01Josu San MartinJosu San MartinCPPg++14.2.0Success3,391+12.99 RP
Aug 10, 2026 03:54Josu San MartinJosu San MartinCPPg++14.2.0Success3,406+13.73 RP
Aug 10, 2026 03:38Josu San MartinJosu San MartinCPPg++14.2.0Success3,422+19.51 RP
Aug 10, 2026 03:35Josu San MartinJosu San MartinCPPg++14.2.0Success3,447
Aug 10, 2026 03:15Josu San MartinJosu San MartinCPPg++14.2.0Success3,445+44.80 RP
Aug 10, 2026 02:54Josu San MartinJosu San MartinCPPg++14.2.0Success3,503
Aug 10, 2026 02:51Josu San MartinJosu San MartinCPPg++14.2.0Success3,500
Aug 10, 2026 02:45Josu San MartinJosu San MartinCPPg++14.2.0Success3,514
Aug 10, 2026 02:42Josu San MartinJosu San MartinCPPg++14.2.0Success3,499+41.06 RP
Aug 10, 2026 02:36Josu San MartinJosu San MartinCPPg++14.2.0Success3,552
Aug 10, 2026 02:01Josu San MartinJosu San MartinCPPg++14.2.0Success3,621