Submission #1249874

#TimeUsernameProblemLanguageResultExecution timeMemory
1249874ZicrusTriple Peaks (IOI25_triples)C++20
18 / 100
2093 ms1864 KiB
#include <bits/stdc++.h> #include "triples.h" using namespace std; typedef long long ll; typedef pair<ll, ll> pll; #define all(v) v.begin(), v.end() constexpr ll inf = 1ll << 62ll; mt19937 mt(time(0)); ll _ = 0; bool valid(vector<int> &h, ll i, ll j, ll k) { if (j < i || k < i || k >= h.size()) return false; multiset<ll> dists = {abs(i-j), abs(j-k), abs(k-i)}; multiset<ll> heights = {h[i], h[j], h[k]}; return dists == heights; } ll count_triples(vector<int> h) { ll n = h.size(); ll cnt = 0; for (ll i = 0; i < n; i++) { ll j = i + h[i]; if (j < n && h[j] != h[i]) { if (i + h[j] != j + h[i]) cnt += valid(h, i, j, i + h[j]); if (i + h[j] != j - h[j]) cnt += valid(h, i, j, j - h[j]); cnt += valid(h, i, j, j + h[j]); } for (j = i+1; j + h[i] < n; j++) { ll k = j + h[i]; cnt += valid(h, i, j, k); } } return cnt; } vector<int> construct_range(int M, int K) { return {}; } #ifdef TEST #include "grader.cpp" #endif
#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...