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
    ducbao_    10:38 a.m. 29 Tháng 10, 2024

    hai phần tử dễ thương ❌
    hai phần tử dễ đập ✅


    • 0
      P2A2_16    9:51 a.m. 28 Tháng 8, 2024

      n=int(input())
      a=list(map(int,input().split()))
      MIN=a[0]
      i=0
      MAX=-10e6
      for j in range (1,n):
      tam=a[j]-a[i]
      if tam>MAX:
      d=i
      c=j
      MAX=tam
      if a[j]<MIN:
      MIN=a[j]
      i=j
      print(d+1,c+1)
      print (MAX)


      • 1
        blinh    10:04 p.m. 20 Tháng 8, 2024 chỉnh sửa 3

        python không vòng lặp:

        n = int(input())
        m = list(map(int, input().split()))
        
        a1 = m.index(min(m[:-1]))  # tìm i nhỏ nhất trước
        b1 = m[a1 + 1:].index(max(m[a1 + 1:])) + a1 + 1  # tìm j lớn nhất sau
        
        w1 = m[b1] - m[a1]  # đáp án trường hợp 1
        
        m.reverse()  # tìm chiều ngược lại
        b2 = m.index(max(m[:-1]))  # tìm j lớn nhất trước
        a2 = m[b2 + 1:].index(min(m[b2 + 1:])) + b2 + 1  # tìm i nhỏ nhất sau
        m.reverse()  # trả mảng như cũ
        
        # vì tìm trong mảng bị đổi chiều nên sửa lại
        a2 = n - a2
        b2 = n - b2
        
        w2 = m[b2] - m[a2]  # đáp án trường hợp 2
        
        if w1 <= w2:
            print(a2 + 1, b2 + 1)  # nếu trường hợp 2 là max
        else:
            print(a1 + 1, b1 + 1)
        print(max(w1, w2))
        

        • -4
          lehongduc    6:39 p.m. 19 Tháng 6, 2024 chỉnh sửa 7

          .


          • 1
            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])

            2 phản hồi

            • -1
              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 á

              1 phản hồi

              • 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ì


                  • 0
                    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í

                      • 6 bình luận nữa