Cho dãy N (1 <= N <= 103) số nguyên dương A1, A2, ..., AN (Ai <= 103). Với bộ ba chỉ số i, j và k (1 <= i < j < k <= N), hãy tìm giá trị S = 2Ai – 3Aj + 5Ak sao cho S đạt giá trị lớn nhất.

1 câu trả lời

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N int (1e5)
#define inf 1e15
int main()
{
   ll a[N+3],aimax[N+3],akmax[N+3],smax=-inf;
   int n;
   cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    aimax[1]=a[1];
    for(int i=2;i<=n;i++)
    aimax[i]=max(aimax[i-1],a[i]);
    akmax[n]=a[n];
     for(int k=n-1;k>0;k--)
     akmax[k]=max(akmax[k+1],a[k]);
      for(int j=2;j<=n-1;j++)
      smax=max(smax,2*aimax[j-1]-3*a[j]+akmax[j+1]*5);
      cout<<smax;
}