Answer to Question #34152 in C++ for vignesh

Question #34152
One day Bob is playing Zombie World video game. In Zombie World game each round will contain N zombie's and each zombie's energy is Zi (where 1<=i<=N). Bob will start the round with B energy. In order to move to the next level Bob need to kill all the N zombie's but Bob can select any one among N Zombie's. If energy of Bob (B) is less than Zombie energy (Zi) then Bob will die and lose the round else Bob will won, during the fighting with zombie, Bob will lose his energy by (Zi%2)+(Zi/2). At any point of game Bob will play optimally. Now your task is to find out whether Bob can reach to the next level or not.

Input Format:

First line will contains B and N, separated by space, where B is the energy of Bob and N is the number of Zombie. Next line will contain N spaced integers each will represent the energy of zombie.

Line 1

B N, where B is the energy of Bob and N is the number of Zombie

Line 2

Zi, where Zi is a list containing energy of zombies separated by space


Expert's answer
using namespace std;

int main()
int B;
cin >> B;

int N;
cin >> N;

vector<int> Zi;
int a;

for (int i = 0; i < N; i++) {
cin >> a;

sort(Zi.begin(), Zi.end()); // sort array of zombie's energy in ascending
reverse(Zi.begin(), Zi.end()); // reverse array.

for (int i = 0; i < N; i++) { // get a sorted array in descending and begin to kill the strongest zombie while bob has energy or number of zombie more than zero

if (B < Zi[i]) {
cout << "Bob will not reach the next level";

B -= ((Zi[i] % 2) + (Zi[i] / 2));

cout << "Bob will reach the next level!";


return 0;

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!


No comments. Be the first!

Leave a comment

Ask Your question

New on Blog