zoj 2059

#include<iostream>
#include<fstream>
#include<memory.h>

using namespace std;

int n;
int a[101];

int dp[101][4004];

void read(){
//    ifstream cin("in.txt");
    int i,j,k;
    while(cin>>n)
    {
        if(n<0) return;
        if(n<=1)
        {
            cout<<"Sorry"<<endl;
            continue;
        }
        for(i=1;i<=n;i++)
            cin>>a[i];
        memset(dp,-1,sizeof(dp));
        dp[1][-a[1]+2000]=a[1];
        dp[1][a[1]+2000]=a[1];
        dp[1][2000]=0;
        int ans=-1;
        for(i=1;i<n;i++)
            for(j=0;j<=4000;j++)
                if(dp[i][j]>=0)
                {
                    dp[i+1][j-a[i+1]]=max(dp[i+1][j-a[i+1]],dp[i][j]+a[i+1]);
                    dp[i+1][j+a[i+1]]=max(dp[i+1][j+a[i+1]],dp[i][j]+a[i+1]);
                    dp[i+1][j]=max(dp[i+1][j],dp[i][j]);
                }
        if(dp[n][2000]>0) cout<<dp[n][2000]/2<<endl;
        else
             cout<<"Sorry"<<endl;
   
           
                       
    }

}

int main(){
    read();
    return 0;
}

posted on 2011-07-10 21:52  宇宙吾心  阅读(193)  评论(0)    收藏  举报

导航