#include <bits/stdc++.h>
#include "triples.h"
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
#define all(v) v.begin(), v.end()
constexpr ll inf = 1ll << 62ll;
mt19937 mt(time(0));
ll _ = 0;
bool valid(vector<int> &h, ll i, ll j, ll k) {
if (j < i || k < i || k >= h.size()) return false;
multiset<ll> dists = {abs(i-j), abs(j-k), abs(k-i)};
multiset<ll> heights = {h[i], h[j], h[k]};
return dists == heights;
}
ll count_triples(vector<int> h) {
ll n = h.size();
ll cnt = 0;
for (ll i = 0; i < n; i++) {
ll j = i + h[i];
if (j < n && h[j] != h[i]) {
if (i + h[j] != j + h[i]) cnt += valid(h, i, j, i + h[j]);
if (i + h[j] != j - h[j]) cnt += valid(h, i, j, j - h[j]);
cnt += valid(h, i, j, j + h[j]);
}
for (j = i+1; j + h[i] < n; j++) {
ll k = j + h[i];
cnt += valid(h, i, j, k);
}
}
return cnt;
}
vector<int> construct_range(int M, int K) {
return {};
}
#ifdef TEST
#include "grader.cpp"
#endif
# | 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... |