dp水题,不解释
#include <iostream>
#include <cstdio>
using namespace std;
const int maxn=1000+10;
int v[maxn];
long long sumv[maxn];
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
int i,j;
for(i=1;i<=n;i++) scanf("%d",&v[i]);
memset(sumv,0,sizeof(sumv));
long long maxv=0;
sumv[1]=v[1];
sumv[0]=0;
for(i=2;i<=n;i++)
{
long long tmax=v[i];
for(j=1;j<i;j++)
{
if(v[j]<v[i]&&v[i]+sumv[j]>tmax) tmax=v[i]+sumv[j];
}
sumv[i]=tmax;
}
for(i=1;i<=n;i++) if(sumv[i]>maxv) maxv=sumv[i];
printf("%I64d\n",maxv);
}
return 0;
}