#include "internship.h"
#include <fstream>
#include <algorithm>
#include <iomanip>
namespace internship {
using date::year_month_day;
using date::sys_days;
void solution(const std::string& jsonFileName, int elementsCount) {
std::ifstream file(jsonFileName);
if (!file.is_open()) {
std::cerr << "Failed to open JSON file " << jsonFileName << std::endl;
return;
}
json jsonData;
try {
file >> jsonData;
} catch (const json::parse_error& e) {
std::cerr << "Failed to parse JSON file " << jsonFileName << ": " << e.what() << std::endl;
return;
}
std::vector<std::pair<std::string, std::chrono::days>> osList;
for (const auto& os : jsonData["operating_systems"]) {
std::string name = os["name"];
auto start = sys_days(year_month_day::from_string(os["release_date"]));
auto end = start + std::chrono::hours(os["support_period"].get<int>() * 24);
osList.emplace_back(name, end - start);
}
std::sort(osList.begin(), osList.end(), [](const auto& lhs, const auto& rhs) {
return lhs.second > rhs.second;
});
std::cout << "Top " << elementsCount << " operating systems with longest support period:" << std::endl;
for (int i = 0; i < elementsCount && i < osList.size(); ++i) {
const auto& os = osList[i];
auto end = os.second;