最长上升子序列和的变体。
#include<iostream>
using namespace std;

const int maxn=1001;
int A[maxn];
int dp[maxn];

int main(){
	int n;
	while(cin>>n){
		for(int i=0;i<n;i++){
			cin>>A[i];
		}
		int maximum=0;
		for(int i=0;i<n;i++){
			dp[i]=A[i];		//初始化为A[i],以便后面直接用dp[i]进行比较
			for(int j=0;j<i;j++){
				if(A[j]<A[i]){
					dp[i]=max(dp[i],dp[j]+A[i]);
				}
			}
			maximum=max(maximum,dp[i]);
		}
		cout<<maximum<<endl;
	}
	return 0;
}