#include "triples.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
long long count_triples(std::vector<int> H) {
int n = H.size();
ll ans = 0LL;
for (int i=0; i<n; i++){
int k = i+H[i];
if (k<n && H[k]<H[i]){
if (H[i+H[k]]==H[i]-H[k])
ans++;
if (2*H[k]!=H[i] && H[k-H[k]]==H[i]-H[k])
ans++;
}
}
for (int k=0; k<n; k++){
int i = k-H[k];
if (i>=0 && H[i]<H[k]){
if (H[k-H[i]]==H[k]-H[i])
ans++;
if (2*H[i]!=H[k] && H[i+H[i]]==H[k]-H[i])
ans++;
}
}
for (int i=0; i<n; i++){
int j = i+H[i];
if (j<n && H[j]>H[i]){
int k = i+H[j];
if (k<n && H[k]+H[i]==H[j])
ans++;
}
}
vector<int> pp[2*n+1];
for (int i=0; i<n; i++){
pp[i-H[i]+n].push_back(i);
}
int rt = (int)sqrt(n);
for (int x=0; x<=2*n; x++){
if (pp[x].size()<=rt){
for (int a=0; a<pp[x].size(); a++){
int j = pp[x][a];
for (int b=0; b<a; b++){
int i = pp[x][b];
int k = i+H[j];
if (H[i]<H[j] && k<n){
if (H[i]+H[k]==H[j])
ans++;
}
}
}
}
else{
for (int k=0; k<n; k++){
int sum = x-n+k;
int diff = H[k];
if (diff%2==sum%2){
int i = (sum-diff)/2;
int j = (sum+diff)/2;
if (i>-1 && j>-1 && i-H[i]+n==x && j-H[j]+n==x)
ans++;
}
}
}
}
return ans;
}
std::vector<int> construct_range(int M, int K) {
vector<int> r = {1, 2, 1};
for (int i=3; i<M; i++)
r.push_back(i%2+1);
return r;
}
# | 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... |