#include "triples.h"
long long count_triples(std::vector<int> H) {
  std::vector<std::vector<int>> asd (H.size());
  for (int i=0; i<H.size(); i++)
    asd[H[i]].push_back(i);
  std::vector<std::vector<int>> cache(H.size());
  for (int i=0; i<H.size(); i++)
    if (i-H[i] >= 0)
      cache[i-H[i]].push_back(i);
  long long ans = 0;
  for (int i=0;i<H.size(); i++) {
    if (i + H[i] >= H.size()) continue;
    int sub_peak_index = H[i] + i;
    // One case - special case
    for (int x: cache[i+H[i]]) { // cba
      if (H[x] + i >= H.size()) continue;
      int sub_peak = H[x] + i;
      if (H[sub_peak] == H[i] + H[x])
        ans++;
    }
    if (i + H[sub_peak_index] < H.size()) { // abc
      int last = i + H[sub_peak_index];
      if (H[i] + H[last] == H[sub_peak_index] && H[i] != H[last])
        ans++;
    }
    if (i + H[sub_peak_index] < H.size()) { // cab
      int last = i + H[sub_peak_index];
      if (H[i] == H[sub_peak_index] + H[last])
        ans++;
    }
    if (sub_peak_index - H[sub_peak_index] >= 0) { // bac
      int last = H[i] + i - H[sub_peak_index];
      if (H[last] + H[sub_peak_index] == H[i] && H[last] != H[sub_peak_index])
        ans ++;
    }
    for (int sub_peak_index: cache[i]) { // bca
      if (sub_peak_index - H[i] < 0) continue;
      int last = sub_peak_index - H[i];
      if (H[last] + H[i] == H[sub_peak_index])
        ans++;
    }
    if (sub_peak_index + H[sub_peak_index] <= H.size()) { // acb
      int last = sub_peak_index + H[sub_peak_index];
      if (H[last] == H[i] + H[sub_peak_index] && H[i] != H[sub_peak_index])
        ans ++;
    }
  }
  return ans;
}
std::vector<int> construct_range(int M, int K) {
  std::vector<int> ans, base  = {1, 2, 1, 4, 3, 2, 7, 6, 5, 6, 3, 4, 5, 1};
  for (int i=0; i<M; i++)
    ans.push_back(base[i%base.size()]);
  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... |