Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <cstring>#include <cctype>#include <algorithm>using namespace std;struct card {int hp, att, c;bool d;};const int maxn = 10;int n, perm[maxn], fac[maxn], ans;card a[maxn];void dfs(int al, int vd, bool dd, int ts) {if (!al || !vd) {for (int i = 0; i < n; ++ i)if (a[i]. hp > 0)ts += a[i]. c * a[i]. att;if (ts > ans)ans = ts;}else {for (int i = 0; i < n; ++ i)if (a[i]. hp > 0 && a[i]. c) {-- a[i]. c;if (a[i]. d) {a[i]. d = 0;