1 solutions

  • 0
    @ 2024-12-11 0:49:30

    C++ :

    #include<iostream>
    using namespace std;
    const int N(105);
    int t[N*N],len[N];
    bool f[N*N],g[N*N];
    //ifstream cin("castle.in");
    //ofstream cout("castle.out");
    int main()
    {
    	int n;
    	cin>>n;
    	fill(f,f+N*N,true);
    	for (int k,x,i=1;i<=n;i++)
    	{
    		fill(g,g+N*N,false);
    		k=0;
    		while (cin>>x&&x!=-1) len[++k]=x;
    		t[0]=1; t[1]=0;
    		for (int i=1;i<=k;i++)
    			for (int j=1,m=t[0];j<=m;j++)
    				if (!g[t[j]+len[i]])
    					g[t[j]+len[i]]=true,t[++t[0]]=t[j]+len[i];
    		for (int i=1;i<N*N;i++) f[i]=f[i]&&g[i];
    	}
    	for (int j=N*N-1;j>=0;j--)
    		if (f[j]) { cout<<j<<endl; break; }
    	//system("pause");
    	return 0;
    }
    	
    
    
    • 1

    Information

    ID
    738
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By