Submission #1311913

#TimeUsernameProblemLanguageResultExecution timeMemory
1311913CyanberryTriple Peaks (IOI25_triples)C++20
0 / 100
1494 ms2360 KiB
#include "triples.h" #include <bits/stdc++.h> using namespace std; #define ll long long int N; bool checkTriple(int a, int b, int c, vector<signed>& H) { if (a >= N) return false; if (b >= N) return false; if (c >= N) return false; vector<int> d {abs(b-a), abs(c-a), abs(c-b)}; vector<int> h = {H[a], H[b], H[c]}; sort(d.begin(), d.end()); sort(h.begin(), h.end()); for (int i = 0; i < 3; ++i) { if (d[i] != h[i]) return false; } return true; } long long count_triples(std::vector<signed> H) { ll ret = 0; N = H.size(); set<int> nums; for (int i = 0; i < N; ++i) { int curr = H[i]; int left = i - curr, right = i + curr; if (N > 2000) { for (int j = i - 20; j < i + 20; ++j) { if (j < 0) continue; if (j >= N) break; nums.clear(); nums.insert(i + H[i]); nums.insert(i + H[j]); nums.insert(j + H[i]); nums.insert(j + H[j]); for (auto k = nums.begin(); k != nums.end(); ++k) { if (checkTriple(i, *k, j, H)) { ++ret; // cout<<i<<' '<<*k<<' '<<j<<'\n'; } }; } } else { for (int j = i; j < N; ++j) { nums.clear(); nums.insert(i + H[i]); nums.insert(i + H[j]); nums.insert(j + H[i]); nums.insert(j + H[j]); for (auto k = nums.begin(); k != nums.end(); ++k) { if (checkTriple(i, *k, j, H)) { ++ret; // cout<<i<<' '<<*k<<' '<<j<<'\n'; } } } } } return ret/2; } std::vector<int> construct_range(int M, int K) { return {1, 1, 1}; }
#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...