Submission #1253452

#TimeUsernameProblemLanguageResultExecution timeMemory
1253452fve5Triple Peaks (IOI25_triples)C++20
29.29 / 100
2096 ms2376 KiB
#include <bits/stdc++.h> #include "triples.h" using namespace std; typedef long long i64; i64 count_triples(vector<int> H) { auto check = [&](int i, int j, int k) { array<int, 3> h = {H[i], H[j], H[k]}; array<int, 3> d = {abs(i - j), abs(i - k), abs(j - k)}; sort(h.begin(), h.end()); sort(d.begin(), d.end()); return h == d; }; int N = H.size(); i64 ans = 0; int max_h = *max_element(H.begin(), H.end()); for (int i = 0; i < N; i++) { for (int j = i + 1; j < min(N, i + max_h + 1); j++) { vector<int> ks = {i + H[i], j + H[j], i + H[j], j + H[i]}; sort(ks.begin(), ks.end()); ks.resize(unique(ks.begin(), ks.end()) - ks.begin()); for (auto k: ks) ans += k > j && k < N && check(i, j, k); } } return ans; } vector<int> construct_range(int M, int K) { vector<int> A(M); iota(A.begin(), A.end(), 0); A[0] = 1; return A; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...