#include "triples.h"
#include <bits/stdc++.h>
#ifdef LOCAL
#include "Debug.h"
#else
#define debug(...) 42
#endif
using namespace std;
long long calc(vector<int> h)
{
int n = size(h);
vector<int> l(n, -1), r(n, -1);
for (int i = 0; i < n; i++)
{
if (h[i] <= i)
l[i] = i - h[i];
if (i + h[i] < n)
r[i] = i + h[i];
}
long long res = 0;
for (int i = 0; i < n; i++)
{
int j = r[i];
if (j < 0)
continue;
// 2.3..5
if (r[j] >= 0 && h[r[j]] == h[i] + h[j])
res++;
// 2.5..3
if (h[j] > h[i])
{
int k = j + h[j] - h[i];
if (k < n && l[k] == j)
res++;
}
// 2..5.3
for (int k = i + 1; k < n; k++)
if (l[k] == j && h[k] != h[i] && h[i + h[k]] == h[i] + h[k])
res++;
// 5.3..2
if (h[j] < h[i])
{
int k = i + h[j];
if (r[k] == j && h[k] != h[j])
res++;
}
}
for (int i = 0; i < n; i++)
{
int j = l[i];
if (j < 0)
continue;
// 5.2..3
if (l[j] >= 0 && h[l[j]] == h[i] + h[j])
res++;
// 3.2..5
int k = i + h[j];
if (r[j] != i && k < n && h[k] == h[i] + h[j])
res++;
}
return res;
}
long long count_triples(vector<int> h) {
return calc(h);
}
vector<int> construct_range(int M, int K) {
return {1, 1, 1};
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |