Số Chẵn Lớn Nhất

Xem PDF

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

Cho số nguyên dương \(n\) và dãy số \(a_{1}, a_{2}, \ldots, a_{n}\).

Yêu cầu: Bạn hãy xác định xem liệu có tồn tại hai phần tử khác nhau sao cho tổng của chúng là số chẵn hay không. Nếu có bạn hãy in ra số chẵn lớn nhất có thể.

Hai phần tử \(a_{i}\)\(a_{j}\) được gọi là khác nhau nếu \(i \neq j\).

Input

  • Dòng đầu tiên chứa số nguyên dương \(n\) \((2 \leq n \leq 10^{6})\).
  • Dòng thứ hai chứa dãy số \(a_{1}, a_{2}, \ldots, a_{n}\) \((0 \leq a_{i} \leq 10^{9})\). Các số cách nhau một khoảng trắng.
  • Dữ liệu vào đảm bảo rằng tất cả các phần tử trong dãy đều đôi một khác nhau.

Output

  • In ra đáp án bài toán sau khi thực hiện yêu cầu đề bài. Nếu không tồn tại hai phần tử thỏa mãn yêu cầu đề bài hãy in ra \(-1\).

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): \(n \leq 5000\).
  • Subtask \(2\) (\(70\%\) số điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
3
2 3 4
Output
6
Note

\(a_1 + a_2 = 2 + 3 = 5\)
\(a_1 + a_3 = 2 + 4 = 6\)
\(a_2 + a_3 = 3 + 4 = 7\)
Vậy \(6\) là số chẵn lớn nhất thỏa mãn yêu cầu đề bài.


Bình luận

  • MinhBùi_288 9:41 a.m. 31 Tháng 3, 2025
    //ʕ•ᴥ•ʔ HARU ➻❥cutis1tgミ★
    /* 
        {\_/}               10 TIN - IOG - VNG           
        (^~^)            *************************
        />AC>                  I'm Minh Bui 
    */
    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int maxn = 1e7 + 1;
    const int mod = 1e9 + 7;
    Haru {
        int n;
        cin >> n;
        vector<ll> chan;
        vector<ll> le;
        for(int i=0; i<n; i++) {
            ll x;
            cin >> x;
            if(x % 2 == 0) chan.push_back(x);
            else le.push_back(x);
        }
        sort(chan.begin(), chan.end(), greater<ll>());
        sort(le.begin(), le.end(), greater<ll>());
        ll t1 = 0, t2 = 0;
        if(chan.size() >= 2) t1 = chan[0] + chan[1];
        if(le.size() >= 2) t2 = le[0] + le[1];
        if(t1 == 0 && t2 == 0) cout << -1 << endl;
        else cout << max(t1, t2) << endl;
        return 0; 
    }
    
    • hoangphucnguyen 9:34 p.m. 29 Tháng 10, 2024 đã chỉnh sửa

      Cộng 2 số chẵn lớn nhất của dãy là AC

      Nhưng mà làm sao để chia ra hai dãy là chẵn hay lẻ đây

      • KhoiNguyen_NTT 3:56 p.m. 20 Tháng 4, 2024

        ad ơi, test của bạn bị sai rồi. các test 4,5,7 chỉ có hai số, 1 chẵn, 1 lẻ. Nhưng cái output nó lại in ra số sai chứ không in -1

        • thaytruyenductri 10:19 a.m. 7 Tháng 10, 2023

          Làm sao để sửa lỗi index out of range vậy mọi người

          n = int(input())
          a = list(map(int, input().split()))
          even = []
          odd = []
          for i in a:
              if i%2==0:
                  even.append(i)
              else:
                  odd.append(i)
          if len(even)==1:
              EvenMax = even
          else:
              even.sort()
              EvenMax = odd[-1]+odd[-2]
          if len(odd)==1:
              OddMax = odd
          else:
              odd.sort()
              OddMax = odd[-1]+odd[-2]
          print(int(max(OddMax, EvenMax)))
          

          • thaytruyenductri 10:17 a.m. 7 Tháng 10, 2023 chỉnh sửa 2

            .

            • Viet_osu 10:11 p.m. 24 Tháng 9, 2023

              This comment is hidden due to too much negative feedback. Click here to view it.