fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. int main() {
  5. ll n,b[4],mx=-1e18;
  6. cin>>n>>b[0]>>b[1]>>b[2];
  7. int a[n+2],pmx[n+3],pmn[n+3],smx[n+3],smn[n+3];
  8. for(int i=0;i<n;i++)
  9. cin>>a[i];
  10. pmx[0]=pmn[0]=a[0];
  11. for(int i=1;i<n;i++)
  12. {
  13. if(pmx[i-1]<a[i])
  14. pmx[i]=a[i];
  15. else
  16. pmx[i]=pmx[i-1];
  17. if(pmn[i-1]>a[i])
  18. pmn[i]=a[i];
  19. else
  20. pmn[i]=pmn[i-1];
  21. }
  22. smx[n-1]=smn[n-1]=a[n-1];
  23. for(int i=n-2;i>=0;i--)
  24. {
  25. if(smx[i+1]<a[i])
  26. smx[i]=a[i];
  27. else
  28. smx[i]=smx[i+1];
  29. if(smn[i+1]>a[i])
  30. smn[i]=a[i];
  31. else
  32. smn[i]=smn[i+1];
  33. }
  34. for(int i=0;i<n;i++)
  35. {
  36. ll ans=0;
  37. ans+=a[i]*b[1];
  38. if(b[0]<0)
  39. ans+=pmn[i]*b[0];
  40. else
  41. ans+=pmx[i]*b[0];
  42. if(b[2]<0)
  43. ans+=smn[i]*b[2];
  44. else
  45. ans+=smx[i]*b[2];
  46. mx=max(mx,ans);
  47. }
  48. cout<<mx;
  49. return 0;
  50. }
Success #stdin #stdout 0s 16064KB
stdin
5 1 2 3
1 2 3 4 5
stdout
30