#include <algorithm>
#include <cstddef>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(void)
{
int closestToZero;
int n; // the number of temperatures to analyse
cin >> n; cin.ignore();
std::vector<int> temperatures(n);
for (std::size_t i = 0; i < n; i++) {
int t; // a temperature expressed as an integer ranging from -273 to 5526
cin >> t; cin.ignore();
temperatures[i] = t;
}
try {
closestToZero = temperatures.at(0); // store first value; if empty, we are meant to display “0”
} catch (std::out_of_range) {
cerr << "“First” temperature can’t be stored. Store 0." << endl;
closestToZero = 0;
}
std::for_each(std::cbegin(temperatures), std::cend(temperatures), [&](int const elem) -> void {
cerr << "{ elem: " << elem << ", closestToZero: " << closestToZero << " }";
if (abs(elem) < abs(closestToZero)) {
closestToZero = elem;
} else if (-elem == closestToZero) {
closestToZero = elem > closestToZero ? elem : closestToZero; // edge case, i.e. if -5 and 5, take positive value
}
cerr << " -> " << closestToZero << endl;
});
cout << closestToZero << endl;
}
Comments
0 B
|👍
/👎