bài 4: C++ Cho trước 1 dãy gồm N(1 ≤N ≤5000) số nguyên a1,a2,a3,....an, các số trong phạm vi -10000 đến 10000 Yêu cầu Tìm ba số a,b,c trong dãy sao cho tổng S= a^2+b^2+c^2 đạt giá trị lớn nhất Dữ liệu vào Đọc từ bàn phím theo cấu trúc sau +Dòng đầu là số nguyên N +Dòng thứ 2 đọc N số nguyên a1,a2,a3,....,an,mỗi số cách nhau 1 khoảng trắng Kết qủa ra :Xuất ra màn hình 1 số nguyên duy nhất là tổng số S lớn nhất tìm được ví dụ Dữ liệu vào kết quả ra 5 70 3 1 5 2 6 giải thích ví dụ:"Tổng lớn nhất là S=3^2+5^2+6^2=70

2 câu trả lời

#include <vector>
#include <iostream>
#include <algorithm>

#define sqr(x) (x * x)
using namespace std;

int main() {
    int n; cin >> n;
    vector<int> a(n);
    
    for (int &x: a) cin >> x;
    transform(a.begin(), a.end(), a.begin(), [](int x) { return abs(x); });
    sort(a.begin(), a.end(), greater<int>());
    
    cout << sqr(a[0]) + sqr(a[1]) + sqr(a[2]);
}

*Mình sẽ làm nhanh: Dùng hàm sort() nhé

*Mình sẽ tính |a[i]| nhé vì $a[i]^{2}$ dù âm hay dương thì cũng sẽ ra số dương và mình để |a[i]| để dùng với hàm sort nhé

#include <bits/stdc++.h>
using namespace std;
long long n;
int main()
{
    cin >> n;
    long long a[n];
    for (long long i=0; i<n; i++)
    {
        cin >> a[i];
        a[i]=abs(a[i]);
    }
    sort(a,a+n);
    reverse(a,a+n);
    long long tong=pow(a[0],2)+pow(a[1],2)+pow(a[2],2);
    cout << tong;
}