我这份代码为什么会CE,编译器弹出来的都看不懂。
#include<bits/stdc++.h>
#define int long long
#define INF 0x7f7f7f7f
using namespace std;
const int N=35;
int a,b,c,n,dp[N][N][N][N][2];
int lowbit(int x){int sum=0;for(;x;x>>=1)sum+=x&1;return sum;}
void Min(int &x,int y,int z){if(y<x)x=y;if(z<x)x=z;}
signed main(){
memset(dp,INF,sizeof(dp));
dp[0][0][0][0][0]=0;
cin>>a>>b>>c;
n=max(log2(a),log2(b),log2(c))+1;
a=lowbit(a),b=lowbit(b),c=lowbit(c);
for(int i=0;i<n;i++)
for(int x=0;x<=a;x++)
for(int y=0;y<=b;y++)
for(int z=0;z<=c;z++){
int x1=dp[i][x][y][z][0],x2=dp[i][x][y][z][1];
Min(dp[i+1][x][y][z][0],x1,x2);
Min(dp[i+1][x+1][y][z+1][0],x1+(1<<i),x2+(1<<i));
Min(dp[i+1][x][y+1][z+1][0],x1+(1<<i),x2+(1<<i));
Min(dp[i+1][x+1][y+1][z+1][1],x1+(1<<i+1),x2+(1<<i+1));
}
if(dp[n][a][b][c][0]>=INF)cout<<-1;
else cout<<dp[n][a][b][c][0];
return 0;
}