#include <bits/stdc++.h>
#include "triples.h"
using namespace std;
typedef long long i64;
i64 count_triples(vector<int> H) {
auto check = [&](int i, int j, int k) {
array<int, 3> h = {H[i], H[j], H[k]};
array<int, 3> d = {abs(i - j), abs(i - k), abs(j - k)};
sort(h.begin(), h.end());
sort(d.begin(), d.end());
return h == d;
};
int N = H.size();
i64 ans = 0;
int max_h = *max_element(H.begin(), H.end());
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < min(N, i + max_h + 1); j++) {
vector<int> ks = {i + H[i], j + H[j], i + H[j], j + H[i]};
sort(ks.begin(), ks.end());
ks.resize(unique(ks.begin(), ks.end()) - ks.begin());
for (auto k: ks)
ans += k > j && k < N && check(i, j, k);
}
}
return ans;
}
vector<int> construct_range(int M, int K) {
vector<int> A(M);
iota(A.begin(), A.end(), 0);
A[0] = 1;
return A;
}
# | 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... |