Hai phần tử dễ thương

Xem PDF

Điểm: 300 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một mảng gồm \(n\) số nguyên . Tìm \(2\) chỉ số \(i,j\) thỏa mãn \(1\le i<j\le n\)\(a[j]-a[i]\) đạt giá trị lớn nhất.

Input

  • Dòng thứ nhất chứa số nguyên dương \(n(2\le n\le 10^5)\)

  • Dòng thứ hai chứa \(n\) số nguyên \(a_i(-10^3\le a_i\le 10^3 \text{ }\forall 1\le i\le n)\)

Output

  • Dòng thứ nhất chứa hai chỉ số \(i,j\) thỏa mãn yêu cầu bài toán

  • Dòng thứ hai in ra giá trị \(a[j]-a[i]\)

    (Chú ý nếu có nhiều đáp án in ra đáp án bất kì).

Example

Test 1

Input
3
1 2 3
Output
1 3
2

Bình luận


  • 0
    thuannguyen1972dn    5:57 p.m. 2 Tháng 5, 2024

    python:làm mún ẻ chải:
    def find_maximum_difference(arr):
    n = len(arr)
    max_diff = float('-inf') # Giá trị khác nhau lớn nhất
    min_value = arr[0] # Giá trị nhỏ nhất mà chúng tôi đã thấy

    best_i = 0
    best_j = 0
    
    # Duyệt qua từng phần tử từ thứ 2 đến cuối mảng
    for j in range(1, n):
        # Tính sự khác nhau a[j] - a[i] với i < j
        current_diff = arr[j] - min_value
    
        # Kiểm tra nếu sự khác nhau hiện tại lớn hơn sự khác nhau lớn nhất đã biết
        if current_diff > max_diff:
            max_diff = current_diff
            best_i = arr.index(min_value) + 1  # Tìm chỉ số i tương ứng với giá trị nhỏ nhất
            best_j = j + 1  # Chỉ số j (từ 1-indexed)
    
        # Cập nhật giá trị nhỏ nhất đã thấy
        if arr[j] < min_value:
            min_value = arr[j]
    
    return (best_i, best_j)
    

    Đọc input

    n = int(input())
    arr = list(map(int, input().split()))

    Tìm chỉ số i và j thỏa mãn điều kiện a[j] - a[i] là lớn nhất

    best_i, best_j = find_maximum_difference(arr)
    print(best_i, best_j)
    print(arr[best_j-1] - arr[best_i-1])

    1 phản hồi

    • 0
      tvd_thienhuong    11:49 a.m. 23 Tháng 10, 2023

      n=int(input())
      k=list(map(int,input().split()))
      h=max(k);a=min(k)
      hh=0;aa=0
      for i in range(n):
      if k[i]==a:
      aa=i+1
      continue
      continue
      for i in range(n):
      if k[i]==h:
      hh=i+1
      continue
      continue
      print(min(aa,hh),max(aa,hh))
      print(h-a)
      cho mik hỏi là sai chỗ nào á


      • 0
        dbthuan208    9:52 p.m. 15 Tháng 6, 2023

        test yếu quá


        • 0
          trieunguyen_a1    9:48 p.m. 16 Tháng 8, 2022

          bạn minhm=nhata1 if else hết test luôn =)) kiên trì


          • 1
            mcsmuscle    4:42 p.m. 25 Tháng 7, 2022

            bài này không cần nhập mảng, online solve luôn, lưu lại max min và res để in ra kết quả cuối cùng


            • 1
              khoa_diep_vien_007    11:32 a.m. 2 Tháng 7, 2022

              bạn TienMinh13042009 if test nhờ admin xử lí


              • 0
                TSang_k4    8:28 p.m. 12 Tháng 11, 2021

                ảo ma quá, không biết test yếu hay sao mà làm thế này vẫn ac nhỉ https://www.ideone.com/XmGL0o


                • 2
                  VoBaThongL921    7:44 a.m. 29 Tháng 9, 2021 đã chỉnh sửa


                  • 0
                    hongquanyl1    8:45 a.m. 20 Tháng 7, 2021

                    ảo thật đấy

                    1 phản hồi

                    • -16
                      huybenten10    8:30 p.m. 26 Tháng 3, 2021

                      Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.

                      • 2 bình luận nữa