#include "triples.h"
#include <algorithm>
#include <array>
#include <iterator>
long long count_triples(std::vector<int> H) {
int N = H.size();
long long ans = 0;
// wow I love murdering subtasks
if (N <= 100) {
for (int i = 0; i < N; i++) {
for (int j = i+1; j < N; j++) {
for (int k = j+1; k < N; k++) {
std::array<int, 3> a = {j-i, k-i, k-j};
std::array<int, 3> b = {H[i], H[j], H[k]};
std::sort(a.begin(), a.end());
std::sort(b.begin(), b.end());
if (a[0]==b[0] && a[1]==b[1] && a[2]==b[2]) ++ans;
}
}
}
} else {
// let's assume all elements are at most 10
// we know j-i = x, k-j = y, k-i = (x+y)
// since all elements are most 10, there's only oh so many values of x and y
for (int i = 1; i < 10; i++) {
for (int j = 1; j < 11-i; j++) {
int limit = N-(i+j);
for (int v = 0; v < limit; v++) {
int x = H[v], y = H[v+i], z = H[v+i+j];
std::array<int, 3> a = {x, y, z};
std::array<int, 3> b = {i, j, i+j};
std::sort(a.begin(), a.end());
std::sort(b.begin(), b.end());
if (a[0]==b[0] && a[1]==b[1] && a[2]==b[2]) ans++;
}
}
}
}
return ans;
}
std::vector<int> construct_range(int M, int K) {
return {1, 1, 2};
}
# | 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... |