#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int ll
constexpr int INF = 1ull << 60;
int w[100000 + 5];
int N, K;
struct Node {
Node *left = nullptr, *right = nullptr;
int l, r, m;
int val;
Node(int a, int b) {
l = a, r = b, m = (l + r) >> 1;
if (l == r) {
//val = w[l];
}
else {
left = new Node(l, m);
right = new Node(m + 1, r);
//val = max(left->val, right->val);
}
}
int rmq(int start) {
if (r < start) return 0;
if (start <= l) {
int len = r - start + 1;
if (w[l] - len >= K) return r - l + 1;
if (l == r) return 0;
return left->rmq(start) + right->rmq(start);
}
return left->rmq(start) + right->rmq(start);
}
};
Node *segtree;
signed main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
cin >> N >> K;
for (int i = 0; i < N - 1; ++i) cin >> w[i] >> w[i] >> w[i];
segtree = new Node(0, N - 2);
int cnt = 0;
for (int i = 0; i < N - 1; ++i) {
cnt += segtree->rmq(i) * 2;
}
cout << cnt;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |