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;
}