http://acm.hdu.edu.cn/showproblem.php?pid=1087
#include <bits/stdc++.h>
#define maxs 2000202
#define mme(i,j) memset(i,j,sizeof(i))
using namespace std;
int a[maxs];
int dp[maxs];
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
mme(a,0);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
mme(dp,0);
dp[1] = a[1];
for(int i=2;i<=n;i++)
for(int j=i-1;j>0;j--)
if(a[i]>a[j])
dp[i] = max(a[i]+dp[j],dp[i]);
sort(dp+1,dp+n+1);
printf("%d\n",dp[n]);
}
return 0;
}