题意:起点到终点的上升子序列里面的最大值。设dp【i】表示所求,则
dp[i] = max( dp[i], dp[j] + val[i] );
const int N = 1005;
int dp[N], val[N];
int main()
{
int n;
while( ~scanf("%d", &n) && n ) {
for( int i = 1; i <= n; ++i ) {
scanf("%d", &val[i]);
dp[i] = val[i];
}
for( int i = 1; i <= n; ++i ) {
for( int j = 1; j < i; ++j ) {
if( val[i] > val[j] ) {
dp[i] = max( dp[i], dp[j] + val[i] );
}
}
}
int ans = -inf;
for( int i = 1; i <= n; ++i ) {
ans = max( ans, dp[i] );
}
printf("%d\n", ans);
}
return 0;
}