Submission #1256254

#TimeUsernameProblemLanguageResultExecution timeMemory
1256254bynixTriple Peaks (IOI25_triples)C++20
22.40 / 100
2097 ms20548 KiB
#include "triples.h" #include "bits/stdc++.h" using namespace std; set<vector<int>> pk; void peak(int i, int j, int k, int a, int b, int c){ vector<int> t = {i,j,k}; sort(t.begin(), t.end()); vector<int> p = {abs(i-j), abs(j-k), abs(k-i)}, q = {a, b, c}; sort(p.begin(), p.end()); sort(q.begin(), q.end()); if (p[0] == q[0] && p[1] == q[1] && p[2] == q[2]){ pk.insert({t[0],t[1],t[2]}); } } long long count_triples(vector<int> H) { int N = H.size(); int peaks = 0; for (int i = 0; i < N; i++){ int v = H[i]; for (int j = 0; j < N - v; j++){ if (j == i || j + v == i) continue; peak(i, j, j+v, v, H[j], H[j+v]); } if (i + v < N){ for (int j = 0; j < N; j++){ if (j == i || j == i+v) continue; if (abs(i+v-j) == v) continue; peak(i, j, i+v, v, H[j], H[i+v]); } } if (i - v >= 0){ for (int j = 0; j < N; j++){ if (j == i || j == i-v) continue; if (abs(j-i+v) == v) continue; peak(i, j, i-v, v, H[j], H[i-v]); } } } return pk.size(); } std::vector<int> construct_range(int M, int K) { return {3, 1, 1, 2, 3, 3, 1, 1, 2, 3, 3, 1, 2, 1, 3, 3, 2, 1, 1, 3}; }
#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...