Submission #1097800

#TimeUsernameProblemLanguageResultExecution timeMemory
1097800tien1710Triple Jump (JOI19_jumps)C++14
5 / 100
4083 ms2904 KiB
#include <iostream> #include <vector> #include <climits> using namespace std; // Hàm tìm tổng lớn nhất của 3 số với điều kiện x < y < z và y - x <= z - y trong khoảng [L, R] int findMaxSumInRange(const vector<int>& arr, int L, int R) { // Nếu không đủ phần tử để tạo thành bộ ba, trả về 0 if (R - L + 1 < 3) return 0; int maxSum = INT_MIN; // Duyệt qua tất cả các chỉ số y trong khoảng [L+1, R-1] for (int y = L + 1; y <= R - 1; ++y) { // Với mỗi y, tìm x trong khoảng [L, y-1] và z trong khoảng [y+1, R] for (int x = L; x < y; ++x) { for (int z = y + 1; z <= R; ++z) { // Kiểm tra điều kiện y - x <= z - y if (y - x <= z - y) { // Tính tổng của bộ ba int currentSum = arr[x] + arr[y] + arr[z]; // Cập nhật tổng lớn nhất maxSum = max(maxSum, currentSum); } } } } return maxSum == INT_MIN ? 0 : maxSum; // Trả về 0 nếu không có bộ ba hợp lệ } int main() { int N; cin >> N; vector<int> arr(N); for (int i = 0; i < N; ++i) { cin >> arr[i]; } int Q; cin >> Q; // Xử lý từng truy vấn với khoảng [L, R] for (int i = 0; i < Q; ++i) { int L, R; cin >> L >> R; L--; R--; // Chuyển về chỉ số 0-based // Gọi hàm tìm tổng lớn nhất của 3 số trong khoảng [L, R] int result = findMaxSumInRange(arr, L, R); // In kết quả cho truy vấn hiện tại cout << result << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...