Submission #1289294

#TimeUsernameProblemLanguageResultExecution timeMemory
1289294AmineWeslati3개의 봉우리 (IOI25_triples)C++20
18 / 100
2096 ms1952 KiB
#include "triples.h" #include <set> using namespace std; long long count_triples(std::vector<int> H) { long long ans = 0; int n = H.size(); auto f = [&H, &n] (const int& i, const int& j, const int& k) -> int { if (!(j > i && k > j && j < n && k < n)) return 0; multiset<int> a; a.insert(j - i); a.insert(k - i); a.insert(k - j); for (int x : {H[i], H[j], H[k]}) { auto it = a.find(x); if (it == a.end()) return 0; a.erase(it); } return 1; }; for (int i = 0; i < n; i++) { int h_i = H[i]; if (i + h_i < n) { //case 1 for (int k = i + h_i + 1; k < n; k++) ans += f(i, i + h_i, k); //case 2 for (int j = i + 1; j < i + h_i; j++) ans += f(i, j, i + h_i); // case 3 for (int j = i + 1; j < n; j++) if (j != i + h_i && j + h_i != i + h_i) ans += f(i, j, j + h_i); } } return ans; } 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...