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].
bro the answer is
-2T_T. Edit: I'm so dumb it is maximumwe are not talking about the minimum bro. its max we are talking about.
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().Ngl he should have made a harder challenge
"Can you break my FFT code?"
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
you already assuming the maximum is 0 at the start . Which is only true if the array does contain atleast one element which is positive. So it fails for array which has every value less than 0.
counter example is [-1 , -2 , -3] . Your code will give answer 0 but the correct answer is actually -1