积木城堡

来源:互联网 发布:unity3d 摇杆控制角色 编辑:程序博客网 时间:2024/04/28 09:36
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=110;
int f[maxn][maxn],n,dp[110][10010],cnt[maxn],s[maxn],d[maxn][maxn];
int main(){
 scanf("%d",&n);
 int maxx=-1;
 for(int i=1;i<=n;i++){
  int x;
  while(cin>>x){
   if(x==-1) break;
   d[i][++cnt[i]]=x;
   s[i]+=x;
  }
  if(s[i]>maxx) maxx=s[i];
 }
 for(int i=1;i<=n;i++) dp[i][0]=true;
 for(int i=1;i<=n;i++){
  for(int j=1;j<=cnt[i];j++){
   for(int k=0;k<=s[i];k++){
    if(k-d[i][j]>=0){
     if(dp[i][k-d[i][j]]) dp[i][k]=true;
    }
   }
  }
 }
 int flag=false;
 for(int i=maxx;i>=1;i--){
  int cur=0;
  for(int j=1;j<=n;j++){
   if(dp[j][i]){
    ++cur;
   }
  }
  if(cur==n){
   cout<<i<<endl;
   return 0;
  }
 }
 cout<<0<<endl;
 return 0;
}
原创粉丝点击