Okay, here's a challenge.
The code below is supposed to find the maximum element in a non-empty array. It compiles, and it looks pretty normal.
int ans = 0;
for (int i = 0; i < n; i++) {
if (a[i] > ans) {
ans = a[i];
}
}
cout << ans << '\n';
Find a valid input for which this code fails.
Rules: - Give the smallest counterexample you can find. - Explain why the output is wrong. - Bonus: fix it without changing the overall approach.
Try to find the bug before opening the comments.
Let's see who catches it first








its when the array contains negatives... like if the array a is [-1,-2]. your code outputs 0. which is wrong. cause the answer is -1. initialize the answer to a[0].
its obvious due to ans = 0; on the case [-1] for example, set ans to INT_MIN
also since you didn't say anything about
n, we CAN'T assume that(int)a.size() == n, which means it will result insegmentation fault, changentoa.size().Technically by default if the array contains long longs over the integer limit, the compiler won't tell u and make ans overflow and weird