Preheat the oven to 350°F (175°C). Cook the elbow macaroni according to package instructions until al dente. Drain and set aside.
In a large skillet over medium heat, cook the chopped bacon until crispy. Remove the bacon and set aside, leaving the drippings in the skillet.
Add the halved Brussels sprouts to the skillet and sauté in the bacon drippings for about 5-7 minutes, or until they are tender and slightly browned. Season with salt and pepper. Remove from heat and set aside.
In the same skillet, melt the butter over medium heat. Whisk in the flour and cook for about 1 minute until golden. Gradually whisk in the milk, stirring continuously until the mixture thickens, about 3-5 minutes.
Remove the skillet from heat and stir in the cheddar cheese, mozzarella cheese, garlic powder, onion powder, and cooked bacon until melted and smooth. Add the cooked macaroni and Brussels sprouts, stirring until well combined.
Transfer the mac and cheese mixture to a greased 9x13 inch baking dish.
In a small bowl, combine the breadcrumbs, olive oil, and Parmesan cheese. Sprinkle the breadcrumb mixture evenly over the mac and cheese.
Bake in the preheated oven for 25-30 minutes, or until the top is golden brown and crispy. Let it cool for a few minutes before serving.