Submission #1258148

#TimeUsernameProblemLanguageResultExecution timeMemory
1258148avighnaTriple Peaks (IOI25_triples)C++20
13.20 / 100
17 ms1864 KiB
#include <bits/stdc++.h> bool check(int a, int b, int c, int x, int y, int z) { std::array<int, 3> p = {a, b, c}; std::array<int, 3> q = {x, y, z}; std::sort(p.begin(), p.end()); std::sort(q.begin(), q.end()); return p == q; } long long count_triples(std::vector<int> H) { const int n = H.size(); long long ans = 0; // case 1 for (int k = 0; k < n; ++k) { int i = k - H[k]; if (i < 0 or i >= n) { continue; } int j = H[i] + i; if (j < 0 or j >= n or !(i < j and j < k)) { continue; } ans += check(j - i, k - j, k - i, H[i], H[j], H[k]); } // case 2 for (int k = 0; k < n; ++k) { int i = k - H[k]; if (i < 0 or i >= n) { continue; } int j = k - H[i]; if (j < 0 or j >= n or !(i < j and j < k)) { continue; } if (i != j - H[j]) { continue; } if (H[j] == k - j or H[i] == j - i) { continue; } ans += check(j - i, k - j, k - i, H[i], H[j], H[k]); } return ans; } std::vector<int> construct_range(int M, int K) { return {8, 6, 7, 18, 3, 2, 9, 6, 11, 14, 3, 4, 1, 2, 1, 3, 4, 6, 5, 18}; }
#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...