@[Christian_](/user/1282782) RE解决了,但是~~WA+TLE~~,自行解决:
```
#include <bits/stdc++.h>
using namespace std;
const int N=10100000;
int a[N],f[N]; //填满i至少需要多少个数字
int n;
int main(){
scanf("%d",&n);
int sum=0,alsum=0;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]<0) sum+=-1*a[i];
alsum+=a[i];
}
if(alsum<0){
printf("Impossible\n");
return 0;
}
for(int i=1;i<=sum;i++) f[i]=1e9;
for(int i=1;i<=n;i++){
if(a[i]>0)
for(int j=sum;j>=a[i];j--){
f[j]=min(f[j],f[j-a[i]]+1);
}
}
n-=f[sum];
printf("%d\n",n);
return 0;
}
by QoQ_ @ 2024-03-19 19:39:39