第二题DP AC
int main(){
    int l;
    long long sum = 0;
    cin >> l;
    vector<int> n(l);
    for (int i = 0; i < l; i++){
        cin >> n[i];
        sum += n[i];
    }
    vector<int> rn = n;
    reverse(rn.begin(), rn.end());
    vector<long long> tmp(l + 1, 0);
    vector<vector<long long>>res(2, tmp);
    for (int i = 1; i <= l; i++){
        for (int j = 1; j <= l; j++){
            if (rn[i - 1] == n[j - 1])
                res[1][j] = max(res[0][j - 1] + rn[i - 1], res[1][j - 1]);
            else
                res[1][j] = max(res[1][j - 1], res[0][j]);
        }
        res[0] = res[1];
        res[1] = tmp;
    }
    cout << 2 * sum - res[0][l] << endl;
    return 0;
}