Super Jumping! Jumping! Jumping!
dp之最长上升子序和
// File Name: hdu1087.cpp
// Author: rudolf
// Created Time: 2013年04月25日 星期四 12时32分59秒
#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>
using namespace std;
const int maxn=10005;
int dp[maxn];
int main()
{
int n;
int num[maxn];
int maxc;
while(cin>>n,n)
{
maxc=-1;
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
cin>>num[i];
for(int i=1;i<=n;i++)
for(int j=0;j<i;j++)
{
if(num[i]>num[j])
{
dp[i]=max(dp[j]+num[i],dp[i]);
if(maxc<dp[i])
maxc=dp[i];
}
}
cout<<maxc<<endl;
}
return 0;
}