非连续最大递增子串和
#include<iostream>
#include<cstring>
#define max(a, b) a > b ? a : b
using namespace std;
const int NN = 1005;
int dp[NN], num[NN];
int main() {
int n;
long long mnum;
while (cin >> n && n) {
memset(dp, 0, sizeof(dp));
for (int i = 0; i < n; i++)
cin >> num[i];
dp[0] = num[0];
for (int i = 1; i < n; i++) {
dp[i] = num[i];
for (int j = 0; j < i; j++)
if (num[i] > num[j])
dp[i] = max(dp[i], dp[j] + num[i]);
}
mnum = dp[0];
for (int i = 1; i < n; i++)
mnum = max(mnum, dp[i]);
cout << mnum << endl;
}
return 0;
}