# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1265470 | thenpc | Triple Peaks (IOI25_triples) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "triples.h"
using namespace std;
#define ll long long
ll n,a[200005];
ll count_triples(vector<int> v){
ll n=v.size();
for(int i=1;i<=n;i++){
a[i]=v[i-1];
}
ll ans=0;
for(int i=1;i<=n;i++){
ll x=i-a[i];
if(x<=0){
continue;
}
vector<int> u;
if(2*a[x]!=a[i]){
u.push_back(x+a[x]);
u.push_back(i-a[x]);
}
else{
u.push_back(x+a[x]);
}
for(int j=0;j<u.size();j++){
ll b[4]={i-u[j],i-x,u[j]-x};
ll c[4]={a[i],a[u[j]],a[x]};
sort(b,b+3);
sort(c,c+3);
int sol=1;
for(int l=0;l<3;l++){
if(b[l]!=c[l]){
sol=0;
}
}
ans+=sol;
}
}
return ans;
}
vector<int> construct_range(int m,int k){
vector<int> h;
int n=(m-1)/2;
for(int i=1;i<=n;i++){
h.push_back(i);
}
h.push_back(i+1);
for(int i=n;i>=1;i--){
h.push_back(i);
}
return h;
}