Submission #1249805

#TimeUsernameProblemLanguageResultExecution timeMemory
1249805kduckpTriple Peaks (IOI25_triples)C++20
8.17 / 100
23 ms1864 KiB
#include "triples.h" #include <vector> using namespace std; long long count_triples(std::vector<int> H) { long long res = 0; int n = H.size(); // 1) Brute-force với n ≤ 100 if (n <= 100) { for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) for (int k = j + 1; k < n; k++) { vector<int> height = {H[i], H[j], H[k]}; vector<int> dist = {j - i, k - i, k - j}; sort(height.begin(), height.end()); sort(dist.begin(), dist.end()); if (height == dist) res++; } return res; } // 2) Kiểm tra xem có phải giá trị đều ≤ 10 hay không for (int x : H) { if (x > 10) { // chưa xử lý trường hợp chung lớn hơn 10 return 0; } } // 3) Với mỗi cặp a<b sao cho c=a+b ≤ 10 for (int a = 1; a <= 10; a++) { for (int b = a + 1; b <= 10; b++) { int c = a + b; if (c > 10) break; // Duyệt i sao cho i+c < n for (int i = 0; i + c < n; i++) { if (H[i] != a) continue; if (H[i + c] != c) continue; // hai khả năng j = i+a hoặc j = i+b if (H[i + a] == b) res++; if (H[i + b] == b) res++; } } } return res; } std::vector<int> construct_range(int M, int K) { return {1, 1, 2}; }
#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...