Trị tuyệt đối lớn nhất


Submit solution

Points: 2
Time limit: 1.0s
Memory limit: 488M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Cho dãy số a1, a2, a3, ..., aN , hãy tìm hai chỉ số i và j sao cho:

• i < j

• |ai + aj| lớn nhất

Đầu vào

  • Dòng đầu tiên ghi một số nguyên N (2 ≤ N ≤ 200000) - số phần tử trong dãy.
  • Dòng thứ hai ghi N số nguyên a1, a2, ..., aN (|ai| ≤ 10^9).

Đầu ra

In ra số nguyên duy nhất là giá trị |ai + aj| lớn nhất tìm được.

Ví dụ 1:

Đầu vào

6
-4 3 -9 0 10 5

Đầu ra

15

Ví dụ 2:

Đầu vào

3
-2 -1 -3

Đầu ra

5

Giải thích:

• Ở ví dụ thứ nhất, hai chỉ số cần tìm là 5 và 6, |a5 + a6| = 15.

• Ở ví dụ thứ hai, hai chỉ số cần tìm là 1 và 3, |a1 + a3| = 5.


Comments


  • 0
    bathien  commented on Sept. 22, 2022, 6:40 p.m.

    // Cho em hỏi với ạ, sao em làm thế này mà test báo lỗi ạ

    include<iostream>

    include<math.h>

    using namespace std;

    int main() { int n;cin >>n;int a[n]; for (int i=1;i<=n;i++) cin >>a[i]; int max=abs(a[1]+a[2]); for (int i=1;i<n;i++) { for (int j=i+1;j<=n;j++) { if (abs(a[i]+a[j])>max and i<j) max=abs(a[i]+a[j]); }
    } cout << max; return 0; }


  • 0
    TICHPX  commented on Sept. 10, 2022, 1:02 p.m.

    Ồ mình già rồi


  • 0
    TICHPX  commented on Sept. 10, 2022, 4:11 a.m. edited

    Không hiểu sao mình không AC nhỉ???

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        long long a[n];
        for(auto &x:a)cin>>x;
        if(n>=4)
        {
            sort(a,a+n);
            long long b[]={a[0],a[1],a[n-2],a[n-1]},m=sizeof(b)/sizeof(long long),s=-1; 
            for(int i=0;i<m;i++)
            for(int j=i+1;j<m;j++) if(abs(a[i]+a[j])>s) s=abs(a[i]+a[j]);
            cout<<s;    
        }
        else 
        {
            long long s=-1;
            for(int i=0;i<n;i++)
            for(int j=i+1;j<n;j++) if(abs(a[i]+a[j])>s) s=abs(a[i]+a[j]);
            cout<<s;
        }
    }

    • 1
      hoanbabe_cute19  commented on Sept. 10, 2022, 12:44 p.m.

      Thầy ơi hình như chỗ n >= 4 mình so sánh (b[i] + b[j] > s) thì phải ạ