谁能帮我看一下这道题 QAQ

3. 蛋滚派对

题目 ID:20297

必做题 100

最新提交: Wrong Answer 25

历史最高: Wrong Answer 25

时间限制: 2000ms

空间限制: 524288kB

题目描述

“趴着好难受啊蛋!我要透不过气了蛋!”

“我也不想仰着睡啊蛋!!!”

“那咱俩都翻过来睡呗蛋!”

n 个蛋蛋排成一排睡觉,有些蛋蛋喜欢趴着睡,有些则喜欢仰着睡。你可以做任意次操作,使得相邻的两个蛋蛋都翻过来睡。它们最开始都有个愉悦值,对于任何一个蛋蛋,翻过来之后愉悦值都会变成原来的相反数。

请你最大化它们的愉悦值之和,并回答这个值。

注意:第 1 个蛋蛋和第 n 个蛋蛋不相邻

输入格式

第一行一个正整数 n ,表示蛋蛋的数量。

第二行 n 个整数,其中第 i 个整数 a_i 表示第 i 个蛋蛋的初始愉悦值。

输出格式

一个整数,表示操作后的最大愉悦值之和。

样例

Input 1

3 -10 5 -4

Output 1

19

Input 2

5 10 -4 -8 -11 3

Output 2

30

Input 3

11 -1000000000 1000000000 -1000000000 1000000000 -1000000000 0 1000000000 -1000000000 1000000000 -1000000000 1000000000

Output 3

10000000000

样例解释

样例一中, 1,2 翻滚, 2,3 翻滚,最后愉悦值为 \{10, 5, 4\} ,总和为 19

样例二中, 2,3 翻滚, 4,5 翻滚,最后愉悦值为 ${10,4,8,11,-3}$,总和为 3030

数据范围

  • 对于数据 1\sim 4 :1\leq n\leq 4000
  • 对于数据 5\sim 20 :1\leq n\leq 10^5
  • 对于所有数据: -10^9\leq a_i\leq 10^9

我的代码

#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() 
{
    int n;
    cin >> n;
    vector < int > vec(n);
    for(int i = 0;i < n;i++) cin >> vec[i];
    vector < vector < int > > dp(n,vector < int > (2,0));
    dp[0][0] = vec[0],dp[0][1] = 0 - vec[0];
    for(int i = 1;i < n;i++) 
    {
        dp[i][0] = max(dp[i - 1][0] + vec[i],dp[i - 1][1]+vec[i]);
        dp[i][1] = dp[i - 1][0] - vec[i];
    }
    int ans = max(dp[n - 1][0],dp[n - 1][1]);
    cout << ans;
    return 0;
}

请问谁可以看一下本蒟蒻的代码 QAQ