VT13 - Cặp đôi hoàn hảo (phiên bản 1)

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Cho mảng số nguyên ~A~ có ~n~ phần tử, hãy tìm 2 phần tử lân cận trong mảng sao cho tổng của chúng là lớn nhất. Giả sử phần tử cuối cùng và phần tử đầu tiên cũng có tính lân cận (tạo thành vòng tròn khép kín)

Input

  • Dòng 1 là số lượng phần tử của mảng ~n~
  • Dòng tiếp theo là ~n~ số nguyên tương ứng là các phần tử của mảng

Giới hạn:

  • ~n \in N^*~ và  ~2 \le n \le 10^4~
  • ~|A_{i}| \le 10^8~

Output

In ra 2 phần tử lân cận nhau (cách nhau bởi 1 dấu cách) thỏa mãn yêu cầu đề bài.

Lưu ý:

  • Giữ nguyên thứ tự ban đầu của chúng
  • Nếu có nhiều kết quả, in ra kết quả ở chỉ số mảng (của phần tử đầu tiên) lớn hơn
  • Nếu phần tử cuối cùng và phần tử đầu tiên là cặp có tổng lớn nhất, in phần tử cuối cùng trước (Xem sample #1).

Sample

Input #1
5
3 2 -1 2 4
Output #1
4 3
Input #2
6
1 2 6 1 6 2
Output #2
6 2

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    magiclightman  đã bình luận lúc 14, Tháng 5, 2024, 14:55

    Ai giải thích giúp mik là mik sai ở đâu đc k ạ ? thấy output toàn ra số lung tung

    include <bits/stdc++.h>

    using namespace std; long long a,b,c,n,m; int main() { cin >> n; int a[n]; for (int i=0;i<n;i++) { cin >> a[i]; } for (int i=0;i<n;i++) { if (a[i]+a[n]>m) { m=a[i]+a[n]; b=a[i]; c=a[n]; n--; } } cout << c << " " << b; return 0; }


  • 1
    dinhquy2611  đã bình luận lúc 12, Tháng 4, 2024, 15:44

    Sử dụng con trỏ nha mọi người, copy vào ide đọc cho dễ

    include <iostream>

    include<cmath>

    include <cctype>

    include<vector>

    include<algorithm>

    include<set>

    using namespace std; void perfectcouple(int n, int arr[]){ int tmp=0; int *ptr; int *ptr1; tmp=arr[n-1]+arr[0]; ptr=&arr[n-1]; ptr1=&arr[0]; for(int i=0; i<n-1; ++i){ if(tmp<arr[i]+arr[i+1]){ tmp=arr[i]+arr[i+1]; ptr=&arr[i]; ptr1=&arr[i+1]; } } cout<<*ptr<<" "<<*ptr1; } int main(){ int n; cin>>n; int ar[n]; for(int i=0; i<n; ++i){ cin>>ar[i]; } perfectcouple(n, ar); }


  • 2
    hohoanghai5042011  đã bình luận lúc 14, Tháng 3, 2024, 8:17

    #include<bits/stdc++.h>

    using namespace std; int main() { int n; cin>>n; int a[n]; for(int i=0;i<n;i++) cin>>a[i]; int max=a[0]+a[1]; int c=0; for(int i=0;i<n-1;i++) { if(a[i]+a[i+1]>=max) { max=a[i]+a[i+1]; c=i; } } if(a[n-1]+a[0]>max) cout<<a[n-1]<<" "<<a[0]; else cout<<a[c]<<" "<<a[c+1]; } c++


  • -1
    dailongdza  đã bình luận lúc 18, Tháng 2, 2024, 13:25

    n=int(input()) a=input().split() a=list(map(int, a)) a=a+[a[0]] day=[] tong=0 for i in range(len(a)-1): day.append(a[i]+a[i+1]) d=max(day) m1=0 idex=[] day1=[] for i in range(len(a)-1): if d==a[i]+a[i+1]: idex.append(i) day1.append(a[i]) for i in idex: if max(day1)==a[i]: print(a[i],a[i+1]) python 3 cho bạn nào cần


  • 3
    thangok  đã bình luận lúc 12, Tháng 2, 2024, 12:17

    Quá dễ ae ơi!

    include<bits/stdc++.h>

    using namespace std; int main() { int n; cin>>n; int a[n]; for(int i=0;i<n;i++){ cin>>a[i]; } int x=a[0]+a[n-1]; int y=a[0]; int z=a[n-1]; for(int i=1;i<n-1;i++) { if(x<a[i]+a[i+1]) { x=a[i]+a[i+1]; y=a[i]; z=a[i+1]; } } if(x==a[0]+a[n-1]) cout<<z<<" "<<y; else cout<<y<<" "<<z; return 0; }


  • 2
    Tuankiet2004  đã bình luận lúc 31, Tháng 1, 2024, 2:53

    mn hạn chế part code đi nếu ai hỏi bài chỉ ý tưởng cho ngta để họ suy nghỉ chơ đừng part code cứ sao chép nộp vào đó cũng là bài của họ thôi chơ không phải của mình .Thank mình góp ý vậy.


    • 0
      ZeroNNT17  đã bình luận lúc 5, Tháng 2, 2024, 13:52

      Tùy người thôi ông cũng có người xem code để tham khảo ý tưởng cũng có người lười thì chép luôn của người khác


  • -9
    zntp810__  đã bình luận lúc 31, Tháng 1, 2024, 2:36

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -1
    Vuer  đã bình luận lúc 20, Tháng 1, 2024, 4:48

    include<stdio.h>

    include<math.h>

    int main(){ int n; scanf("%d", &n); int a[n]; for(int i=0; i<n; i++){ scanf("%d", &a[i]); } int max=-2*pow(10,8); if((a[0]+a[n-1])>max) max=(a[0]+a[n-1]); for(int i=0; i<n-1; i++){ if((a[i]+a[i+1])>max) max=(a[i]+a[i+1]); } int b, c; for(int i=0; i<n-1; i++){ for(int j=i+1; j<n; j++){ if((a[i]+a[j])==max){ b=a[i]; c=a[j]; } } } if(max==(a[0]+a[n-1])){ b=a[n-1]; c=a[0]; } printf("%d %d", b, c); }


  • -3
    KhoiMinh  đã bình luận lúc 10, Tháng 1, 2024, 3:53

    code c++ đây

    include <iostream>

    using namespace std; int main() { int n,k,x,y; cin>>n>>k; long long max=0,v1,v2; for (int i=1; i<n; ++i) { cin>>y; if (x+y>=max) { max=x+y; v1=x; v2=y; } if (i==n-1) { if (y+k>=max) { max=y+k; v1=y; v2=k; } } x=y; } cout<<v1<<" "<<v2; }


  • 0
    kitajima2910  đã bình luận lúc 29, Tháng 12, 2023, 11:25

    Java 8+ đã AC chào các đạo hữu, thấy hay thì xin up vote ạ <3

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    /**
     *
     * @author Kitajima2910
     */
    public class VT13 {
    
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
    
            List<Integer> store = new ArrayList<>();
    
            // Thêm data vào trước
            for(int i = 1; i <= n; i++) {
                store.add(sc.nextInt());
            }
    
            // Tạo biến max để lưu
            int max = store.get(0) + store.get(1);
    
            // Tạo biến lưu index
            int index = 0;
    
            // Duyệt mảng và xử lý thuật toán
            for(int i = 1; i < n - 1; i++) {
    
                int sum = store.get(i) + store.get(i + 1);
    
                // Kiểm tra với biến max
                if(sum > max) {
                    max = sum;
                    index = i;
                }
            }
    
            // Kiểm tra 2 số đầu cuối
            int sum = store.get(0) + store.get(n - 1);
            if(sum > max) {
                System.out.println(store.get(n - 1) + " " + store.get(0));
            } else {
                System.out.println(store.get(index) + " " + store.get(index + 1));
            }
    
        }
    
    }
    

  • 0
    sayop_0209  đã bình luận lúc 15, Tháng 12, 2023, 17:49

    Cho em xin test case số 1 với ạk


  • 0
    donguyenphuonganh  đã bình luận lúc 15, Tháng 12, 2023, 10:58

    dạ tại sao em không thể submit bằng C# vậy nhỉ, đa số bài nào cũng kh nộp được


    • 0
      thanhqt74  đã bình luận lúc 17, Tháng 12, 2023, 14:45

      Bạn xem bên allowed languages kìa


  • -2
    baotphcm1612  đã bình luận lúc 23, Tháng 11, 2023, 18:25

    include <iostream>

    #include <cmath>

    int main() { int size; std::cin >> size; long int* number = new long int[size]; for (int i = 0; i < size; i++) { std::cin >> number[i]; } long int a = 0, b = 0; bool manyresult = false; int max = *number + *(number + 1); for (int i = 1; i < size; i++) { if (i < size - 1) { if (max == number[i] + number[i + 1]) { manyresult = true; break; } if (max < number[i] + number[i + 1]) { max = number[i] + number[i + 1]; a = number[i]; b = number[i + 1]; } } else { if (max == number[i] + number[0]) { manyresult = true; } if (max < number[i] + number[0]) { max = number[i] + number[0]; a = number[i]; b = number[0]; } } } if (manyresult) { std::cout << fmax(a, b) << " " << fmin(a, b) << std::endl; } else std::cout << a << " " << b << std::endl; delete[] number; return 0; }


  • -3
    nightfury1409  đã bình luận lúc 31, Tháng 8, 2023, 0:20

    cùng một thuật toán mà c++ lại được mà c# lại không được là như thế nào vậy ạ?

    code c++ :

    include<bits/stdc++.h>

    using namespace std; int main(){ int n;cin>>n; int a[n]; for(int i=0;i<n;i++) cin>>a[i]; int max=a[0]+a[1]; int c=0; for(int i=0;i<n-1;i++){ if(a[i]+a[i+1]>=max) { max=a[i]+a[i+1]; c=i; } } if(a[n-1]+a[0]>max) cout<<a[n-1]<<" "<<a[0]; else cout<<a[c]<<" "<<a[c+1];
    }

    code c#(ko pass):

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

    namespace mang4 { class Program {

        static void Main(string[] args)
        {
            int a = int.Parse(Console.ReadLine());
            string s = Console.ReadLine();
            string[] arrstr = s.Split(' ');
            int[] arr=new int[a];
            for(int i = 0; i < a; i++)
            {
                arr[i] = Convert.ToInt32(arrstr[i]);
            }
            int max = arr[0] + arr[1];
            int c1 = 0;
            for(int i = 0; i < a - 1; i++)
            {
                if (arr[i] + arr[i + 1] >= max) max = arr[i] + arr[i + 1];
                c1=i;
            }
            if (arr[a - 1] + arr[0] > max) Console.WriteLine( arr[a-1]+ " " +arr[0]);
            else
            {
                Console.WriteLine(arr[c1] + " " + arr[c1+1]);
            }
    
            Console.ReadLine();
        }
    }
    

    }