#include "triples.h"
#include<bits/stdc++.h>
using ll=long long;
#define vi vector<int>
#define vl vector<ll>
using namespace std;
ll count(vi &H){
int n=H.size();
ll result=0;
for(int i=0;i<n;i++){
if(H[i]>i)continue;
for(int j=i-H[i];j<i;j++){
if(H[j]>=H[i])continue;
if(H[i]== i-j){
int k=j+H[j];
if(H[k]<=H[j])continue;
if(H[k]+H[j]!=H[i])continue;
if(H[k]==i-k)result++;
k=i-H[j];
if(H[k]==k-j)result++;
continue;
}
int k=i-H[i];
if(H[k]>=H[j] && H[k]<= H[i] && H[k]+H[j]==H[i] && (i-j==H[j] || i-j== H[k]) )result++;
k=j+H[i];
if(k>=n)continue;
if(H[k]>=H[j] && H[k]<= H[i] && H[k]+H[j]==H[i] && (i-j==H[j] || i-j== H[k]) )result++;
}
}
return result;
}
long long count_triples(std::vector<int> H) {
int result=count(H);
reverse(H.begin(),H.end());
result+=count(H);
return result;
}
std::vector<int> construct_range(int M, int K) {
return {1, 1, 1};
}
# | 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... |