#include "triples.h"
#include <set>
using namespace std;
int checkTriple (vector<int> &H, int a, int b, int c) {
if (a == b || b == c || a == c) return 0;
int n = H.size();
if (c < 0 || c >= n) return 0;
multiset<int> ds = {abs(b-a), abs(c-a), abs(c-b)};
multiset<int> hs = {H[a], H[b], H[c]};
return (ds == hs ? 1 : 0);
}
long long count_triples(std::vector<int> H) {
long long ans = 0;
int n = H.size();
for (int i = n-1; i >= 0; i--) {
int a = i - H[i];
if (a + H[a] < i) {
ans += checkTriple(H, a, a+H[a], i);
}
if (a < i - H[a] && i - H[a] != a + H[a]) {
ans += checkTriple(H, a, i-H[a], i);
}
}
return ans;
}
std::vector<int> construct_range(int M, int K) {
vector<int> v = {8, 9, 16, 17, 7, 2, 16, 3, 1, 1, 6, 4, 18, 9, 8, 5, 9, 18, 17, 12};
return v;
}
# | 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... |