#include #include #include #include #include using namespace std; typedef pair pai; int n,maxn; int d[16]; vector dp[16]; vector vis[16]; pai solve(int i,int bit){ if(bit==maxn){ if(d[i]>0) return pai(100,0); else return pai(max(0,100+d[i]),1); } if(vis[i][bit])return dp[i][bit]; pai res(0,0); for(int x=0;x0)continue; pai t=solve(x,bit|mask); if(t.first<=0)continue; if(d[i]<0){ t.first+=d[i]; t.second++; if(t.first>0) res=max(t,res); } else{ t.first=min(t.first+d[i],(t.second+1)*100); res=max(t,res); } } vis[i][bit]=true; return dp[i][bit]=res; } int main(){ cin>>n; maxn=pow(2,n)-1; for(int i=0;i>d[i]; for(int i=0;i