真不知道自己在比赛的时候在干什么,这题都没写。。。。。。。。。。。。。

邓布利多教授正在帮助哈利摧毁魂器。当他怀疑一个魂器出现在那里时,他去了冈特沙克。他看到Marvolo Gaunt的戒指,并将其确定为魂器。虽然他摧毁了它,但仍然受到诅咒的影响。斯内普教授正在帮助邓布利多解除诅咒。为此,他想给Dumbledore提供他制作的药水x滴。

x的值被计算为给定p,q,r和阵列a1,a2,......的p·ai + q·aj + r·ak的最大值,使得1≤i≤j≤k≤n。帮助Snape找到x的值。请注意x的值可能是负数。

Input

第一行输入包含4个整数n,p,q,r( - 1e9≤p,q,r≤1e9, 1≤n≤1e5)。

下一行输入包含n个空格分隔的整数a1,a2,... an( - 1e9≤ai≤1e9)。

Output

输出p≤ai+ q·aj + r·ak的最大值,只要1≤i≤j≤k≤n即可得到。

Examples

Input

5 1 2 3
1 2 3 4 5

Output

30

Input

5 1 2 -3
-1 -2 -3 -4 -5

Output

12

Note

In the first sample case, we can take i = j = k = 5, thus making the answer as 1·5 + 2·5 + 3·5 = 30.

In second sample case, selecting i = j = 1 and k = 5 gives the answer 12.

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
ll lmin[100010];
ll lmax[100010];
ll rmin[100010];
ll rmax[100010];
ll a[1000010];
int main()
{ll n,p,q,r;scanf("%lld%lld%lld%lld",&n,&p,&q,&r);memset(lmin,inf,sizeof(lmin));memset(rmax,-inf,sizeof(rmax));memset(lmax,-inf,sizeof(lmax));memset(rmin,inf,sizeof(rmin));for(int i=1;i<=n;i++){scanf("%lld",&a[i]);//f(i==1) lmin[i]=a[i],lmax[i]=a[i];lmin[i]=min(lmin[i-1],a[i]);lmax[i]=max(lmax[i-1],a[i]);}for(int i=n;i>=1;i--){rmin[i]=min(rmin[i+1],a[i]);rmax[i]=max(rmax[i+1],a[i]);}/*for(int i=1;i<=n;i++){printf("%lld ",rmin[i]);} */ll ans=-4e18;
//  printf("%lld\n",ans);for(int i=1;i<=n;i++){ll w=q*a[i];if(p<0){w+=lmin[i]*p;}else{w+=lmax[i]*p;}if(r<0){w+=rmin[i]*r;}else{w+=rmax[i]*r;}ans=max(ans,w);}printf("%lld\n",ans);return 0;
}

CodeForces - 855B(思维)相关推荐

  1. CodeForces - 855B - Marvolo Gaunt's Ring(线段树 or DP)

    题目:CodeForces - 855B 题解: 1.用dp做的: dp[0][i]是前i个p*a[i]的最大值, dp[1][i]是在dp[0][i]的基础上加上q*a[i]的最大值,这样可以保证j ...

  2. Marvolo Gaunt's Ring CodeForces - 855B+线段树+维护区间最大值和最小值

    题目链接: Marvolo Gaunt's Ring CodeForces - 855B 题目大意: 给定一段序列:a1,a2,a3,--an, 给定三个数:p,q,r(注意数据范围,代码里ans=- ...

  3. Marvolo Gaunt's Ring ---CodeForces - 855B(思维题)

    题目链接:http://codeforces.com/problemset/problem/855/B Marvolo Gaunt's Ring Professor Dumbledore is hel ...

  4. CodeForces 798D 思维,贪心

    CodeForces 798D 题意:长度为 n的两个数组 a[]和 b[],要找出 k ( k<=n/2+1 )个下标,使得在两个数组中这 k个数的和乘上 2 要大于所有数的和. tags: ...

  5. codeforces 855-B. Marvolo Gaunt's Ring

    http://codeforces.com/problemset/problem/855/B 这个题一开始读错了没想到要按顺序之后看到这个就像枚举但是数据太大...emmm然后就有点蒙. 后来看了题解 ...

  6. codeforces 855-B. Marvolo Gaunt's Ring(背包问题)

    http://codeforces.com/problemset/problem/855/B 解题思路: 可以把p,q,r看成三个物品,当做背包问题处理. #include<iostream&g ...

  7. Codeforces 855B - Marvolo Gaunt's Ring

    855B - Marvolo Gaunt's Ring 思路:①枚举a[j],a[i]和a[k]分别用前缀最小值最大值和后缀最小值和后缀最大值确定. ②dp,dp[i][j]表示到第j为止,前i+1个 ...

  8. codeforces - 1315C - 思维题

    原题链接:https://codeforces.com/problemset/problem/1315/C 翻译: 这是一个猜谜游戏,你需要猜中一个序列,谜题是一个序列,我们设为b,长度为n.你需要根 ...

  9. Balanced Substring CodeForces - 873B (思维+前缀和)

    Balanced Substring CodeForces - 873B You are given a string s consisting only of characters 0 and 1. ...

最新文章

  1. js 操作 select option
  2. java编程 内存_Java编程技术之浅析JVM内存
  3. 在线颜色拾取器 - 资源篇
  4. OCR文字识别在计算机视觉的重要性、基本技术和最新进展
  5. 【codeforces】【比赛题解】#872 CF Round #440 (Div.2)
  6. flink源码分析_Flink源码分析之深度解读流式数据写入hive
  7. python程序开发入门_程序设计入门—Python
  8. Flask实现REST API之接收POST和GET请求
  9. jedate选择一年范围日期插件
  10. linux 充电桩计费模块,充电桩及计费方法与流程
  11. Oracle的overlaps函数转换其他数据库语法
  12. 这可能是知乎中,最好的项目管理书单!
  13. OSS上传txt文件乱码问题
  14. seq2seq发展介绍
  15. 备考网规第一章非网络基础
  16. 信息系统成本与质量管理
  17. 【渝粤题库】广东开放大学 行政管理学 形成性考核
  18. 从头打造纯python的mud游戏-基于Evennia(1)
  19. 计算机桌面偏移,​电脑屏幕偏移怎么调整
  20. 条形码的打印,pdf打印条形码

热门文章

  1. 拼一个自己的操作系统(SnailOS 0.03的实现)
  2. 安全态势攻防赛事可视化,助力网络安全发展
  3. android 7.0 2g,LG美国定制机曝光:2GB内存,搭载安卓7.0系统
  4. 全球与中国高氧潜水电脑市场深度研究分析报告
  5. 爬虫爬取www.newdianying.com心心电影网电影资源实例
  6. 机器学习中的小数学知识
  7. H5移动端前置摄像头成像方向错误,横屏方向错误
  8. switch条件语句与跳转语句(附分数分层案例)
  9. SAP 必须参照采购申请创建采购订单的配置方法
  10. 【资源】Oculus meta Quest 2游戏下载VR一体机游戏资源合集下载教程Pro