#include #include #include #include #include #include #include #include #include #include #include #include #pragma warning(disable:4996) typedef long long ll; #define MIN(a, b) ((a)>(b)? (b): (a)) #define MAX(a, b) ((a)<(b)? (b): (a)) #define LINF 9223300000000000000 #define INF 2140000000 #define MOD 1000000007 using namespace std; ll dp[100005][3]; int main(int argc, char* argv[]) { long n, m; scanf("%ld%ld", &n, &m); vector a(n),b(n); long i; for(i=0; i=0; i--) { dp[i][0]=0; dp[i][1]=MAX(dp[i+1][0],dp[i+1][1])+MAX(a[i],b[i]); dp[i][2]=MAX(dp[i+1][0],MAX(dp[i+1][1],dp[i+1][2]))+MAX((ll)a[i]*m,MAX(b[i]+(ll)a[i]*(m-1),b[i])); } printf("%lld\n", dp[0][2]); return 0; }