#include <bits/stdc++.h>
#include "triples.h"
using namespace std;
using ll = long long;
std::vector<int> construct_range(int M, int K) {
return {1};
}
long long count_triples(vector<int> H) {
int n = (int)H.size();
ll ans = 0;
bool f = true;
for (int i = 1; i < n; i++) {
if (H[i - 1] > H[i]) {
f = false;
}
}
if (n <= 50000) {
for (int i = 0; i < n; i++) {
for (int k = i + 2; k < n; k++) {
int x = k - i;
if (x == H[i]) {
if (H[k] < x) {
if (H[i + H[k]] == k - (i + H[k])) {
ans++;
}
if (i + H[k] + H[k] != k && H[k - H[k]] == (k - H[k]) - i) {
ans++;
}
}
} else if (x == H[k]) {
if (H[i] < x) {
if (H[i + H[i]] == k - (i + H[i])) {
ans++;
}
if (i + H[i] + H[i] != k && H[k - H[i]] == (k - H[i]) - i) {
ans++;
}
}
} else {
if (H[i] + H[k] == x) {
if (H[i + H[i]] == x) {
ans++;
}
if (i + H[i] + H[i] != k && H[i + H[k]] == x) {
ans++;
}
}
}
}
}
} else if (f) {
for (int k = 0; k < n; k++) {
int i = k - H[k];
if (i < 0) {
continue;
}
if (H[i + H[i]] == k - (i + H[i])) {
ans++;
}
if (i + H[i] + H[i] != k && (k - H[i]) - i == H[k - H[i]]) {
ans++;
}
}
} else {
for (int i = 0; i < n; i++) {
for (int k = i + 2; k < i + 12; k++) {
for (int j = i + 1; j < k; j++) {
vector<int> d;
d.push_back(j - i);
d.push_back(k - i);
d.push_back(k - j);
vector<int> h;
h.push_back(H[i]);
h.push_back(H[j]);
h.push_back(H[k]);
sort(d.begin(), d.end());
sort(h.begin(), h.end());
if (d[0] == h[0] && d[1] == h[1] && d[2] == h[2]) {
ans++;
}
}
}
}
}
return ans;
}
# | 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... |