hdu 1087

#include<iostream>
#include<limits.h>
using namespace std;

int a[1005];
long long dp[1005];
int n,i,j;

int max(int a,int b){
    return a>b?a:b;
}

int main(){
    while(cin>>n&&n){
        for(i=1;i<=n;i++)
            cin>>a[i];
        a[0]=-INT_MAX;
        a[n+1]=INT_MAX;
        long long max=0;
        memset(dp,0,sizeof(dp));
        for(i=1;i<=n;i++){
            for(j=0;j<i;j++){
                if(a[i]>a[j]&&dp[i]<dp[j]+a[i]){
                    dp[i]=dp[j]+a[i];
                    if(dp[i]>max)
                        max=dp[i];
                }
            }
        }
        cout<<max<<endl;
    }
    return 0;    
}

你可能感兴趣的:(hdu 1087)