WA #2,#11,#29 求助
查看原帖
WA #2,#11,#29 求助
722054
Yhy001楼主2024/7/28 10:51

rt

#include <bits/stdc++.h>
using namespace std;
int a[2005],f1,f2,dp[10005];
int main(){
    int n,mx=-2001;cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i],mx=max(mx,a[i]);
    for(int i=1;i<=n;i++){
        if(a[i]>0) f1=1;
        else if(a[i]<0) f2=1;
        a[i]+=2024;
    }
    if(f1^f2){
        cout<<mx;
        return 0;
    }
    sort(a+1,a+n+1);
    for(int i=1;i<n;i++){
        if(a[i]>2024)for(int j=4024;j>=a[i]-2024;j--) dp[j]|=dp[j-a[i]+2024];
        if(a[i]<2024)for(int j=0;j<=4024;j++) dp[j]|=dp[j-a[i]+2024];
        dp[a[i]]=1;
    }
    for(int i=2024;i>=24;i--){
        if(dp[i]){
            cout<<mx+i-2024;
            return 0;
        }
    }
}
2024/7/28 10:51
加载中...