#include <bits/stdc++.h>
#include <vector>
#include <iostream>
#include <set>
#include "triples.h"
using namespace std;
typedef long long ll;
std::vector<int> construct_range(int M, int K)
{
return {};
}
const int N=1e6+10;
vector<int> pos[N],pos1[N];
long long count_triples(std::vector<int> h)
{
ll ans=0;
ll n=h.size();
for(int i=0;i<n;i++)pos[i].clear(),pos1[i].clear();
// Case 1
// h[i] = k-i
for(int i=0;i<n;i++)
{
// for(int k=i+2;k<n;k++)
int k=i+h[i];
if(k<n)
{
set<int> pj;
pj.insert(i+h[k]);
pj.insert(k-h[k]);
for(auto&j:pj)
{
if(i<j and j<k and h[j]+h[k] == h[i])
{
ans++;
}
}
}
}
// Case 2
// h[k] = k-i
for(int k=0;k<n;k++)
{
int i=k-h[k];
if(i>=0)
{
set<int> pj;
pj.insert(i+h[i]);
pj.insert(k-h[i]);
for(auto&j:pj)
// for(auto j:pj)
{
if(i<j and j<k and h[j]+h[i] == h[k])
{
ans++;
}
}
}
}
for(int i=0;i<n;i++)
{
int v=i+h[i];
if(0<=v and v<n)
{
pos[v].push_back(i);
}
v=i-h[i];
if(0<=v and v<n)
{
pos1[v].push_back(i);
}
}
for(int v=0;v<n;v++)
{
for(int&k:pos1[v])
{
for(int&i:pos[v])
{
if(i>=k)continue;
set<int> pj;
pj.insert(i+h[i]);
pj.insert(i+h[k]);
for(auto&j:pj)
{
if(i<j and j<k and h[j]==k-i)
{
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... |