OIG II - cen

// https://szkopul.edu.pl/problemset/problem/ocGBMr4-sFMy6iEUQ6cZ6gNW/site/?key=statement

#include <algorithm>
#include <iostream>
#include <math.h>

constexpr int sizik = 100 * 1001;

typedef long long ll;

std::pair<int, int> arr[sizik];

int main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    int n, k;
    std::cin >> n >> k;

    for (int i = 0; i < n; i++) {
        int l, z;
        std::cin >> l >> z;

        arr[i].second = z;

        ll local_zas = 0;

        for (int j = 0; j < l; j++) {
            //  x, y
            int a, b;
            std::cin >> a >> b;

            ll sum = (ll)a * a + (ll)b * b;

            ll sq = sqrt(sum);
            if (sq * sq < sum) {
                sq++;
            }

            local_zas = std::max(local_zas, sq);
        }

        arr[i].first = local_zas;
    }

    std::sort(arr, arr + n);

    ll ans = 0, sum = 0;

    for (int i = 0; i < n; i++) {
        sum += arr[i].second;
        ll search = arr[i].first;

        ll x = search / k;

        if (k * x < search) {
            x++;
        }

        ll cost = ((x - 1) * x) / 2;

        ans = std::max(ans, sum - cost);
    }

    std::cout << ans << '\n';

    return 0;
}