#include <iostream>
#include <vector>
bool canReachLastIndex(std::vector<int>& vec) {
int size = vec.size();
int currentIndex = 0;
while (currentIndex < size) {
// If we reach the last index, return true
if (currentIndex == size - 1) return true;
// If jump goes out of bounds, stop
if (currentIndex + vec[currentIndex] >= size) return false;
// Move to the next index by jumping
currentIndex += vec[currentIndex];
}
return false;
}
int main() {
std::vector<int> vec = {2, 3, 1, 1, 4};
if (canReachLastIndex(vec)) {
std::cout << "Yes, we can reach the last index." << std::endl;
} else {
std::cout << "No, we cannot reach the last index." << std::endl;
}
}
/*
run:
Yes, we can reach the last index.
*/