#include <bits/stdc++.h>
#include "triples.h"
using namespace std;
typedef long long ll;
bool check_triple(vector <int> a, vector <int> b){
sort(a.begin(), a.end());
sort(b.begin(), b.end());
if (a[0] != b[0] || a[1] != b[1] || a[2] != b[2])return 0;
return 1;
}
void find_triples(vector <tuple<int, int, int>> &triples, ll n, vector <int> &H, int i, int j){
for (int x : {i, j}){
for (int y : {-H[j], H[j]}){
int z = x+y;
if (z < 0 || z >= n || z == i || z == j)continue;
if (check_triple({abs(i-j), abs(i-z), abs(j-z)}, {H[i], H[j], H[z]})){
vector <int> v = {i, j, z};
//sort(v.begin(), v.end());
triples.push_back({v[0], v[1], v[2]});
}
}
}
}
long long count_triples(std::vector<int> H) {
ll n = H.size();
vector <tuple <int, int, int>> triples;
for (int i = 0; i < n; i++){
if (i-H[i] >= 0)find_triples(triples, n, H, i, i-H[i]);
if (i+H[i] < n)find_triples(triples, n, H, i, i+H[i]);
}
sort(triples.begin(), triples.end());
ll count = 0;
if (!triples.empty()){
cerr << get<0>(triples[0]) << " " << get<1>(triples[0]) << " " << get<2>(triples[0]) << "\n";
count++;
}
for (int i = 1; i < triples.size(); i++){
if (triples[i] != triples[i-1]){
count++;
cerr << get<0>(triples[i]) << " " << get<1>(triples[i]) << " " << get<2>(triples[i]) << "\n";
}
}
return count;
}
std::vector<int> construct_range(int M, int K) {
return {};
}
# | 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... |