Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cmath>#include <cstdio>#include <cstdlib>#include <iostream>#include <algorithm>#include <string>#include <cstring>using namespace std;bool F1[15],F2[15];int A[15],B[15],i,now,p,n,ans,j,tt,F[15];char s[10005];void dfs(int x,int y,int hp,int FF){if (x==n+1) {if (hp<=0) ans=max(ans,y); return ;}dfs(x+1,F2[F[x]]?y+A[F[x]]+A[F[x]]:y+A[F[x]],hp,FF);if (hp>0){dfs(x+1,y,hp-A[F[x]]*(1-FF),0);if (F2[F[x]]){if (F1[F[x]] || B[F[x]]>8) {dfs(x+1,y,hp-A[F[x]]-A[F[x]]*(1-FF),0); dfs(x+1,y+A[F[x]],hp-A[F[x]]*(1-FF),0);}}}}int main(){while (cin>>n){gets(s); ans=0;for (i=1; i<=n; i++){gets(s); p=strlen(s); F1[i]=F2[i]=false; now=0; tt=0;