#include <iostream>
#include <cmath>
using namespace std;
const int N = 35;
int a[N], b[N], n, m, minv = 0x3f3f3f3f;
void dfs(int pos, int sum, int l, int r)
{
int k = fabs(r - l);
if (sum >= m)
minv = min(minv, k);
if (pos > n)
return;
dfs(pos + 1, sum, l, r);
dfs(pos + 1, sum + a[pos] + b[pos], l + a[pos], r + b[pos]);
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> a[i] >> b[i];
dfs(1, 0, 0, 0);
if (minv == 0x3f3f3f3f)
minv = -1;
cout << minv << endl;
}
这是数据问题还是我的问题???这种二选一的爆搜时间复杂度不是二的指数级别的吗,2的30次方凭什么能过啊???
验证码:c9nm