diff --git a/exempleEvent.txt b/exempleEvent.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bdbf3bb527c3660829ee925e71adb6a983b6a6a7
--- /dev/null
+++ b/exempleEvent.txt
@@ -0,0 +1,12 @@
+{"type": "datacenter_announcement", "id": "dcA", "location": "France", "year": 2018, "carbon_intensity": 67, "timestamp": 0}
+{"type": "datacenter_announcement", "id": "dcA", "location": "France", "year": 2019, "carbon_intensity": 69, "timestamp": 1}
+{"type": "datacenter_announcement", "id": "dcA", "location": "France", "year": 2020, "carbon_intensity": 67, "timestamp": 2}
+{"type": "datacenter_announcement", "id": "dcA", "location": "France", "year": 2021, "carbon_intensity": 67, "timestamp": 3}
+{"type": "datacenter_announcement", "id": "dcC", "location": "United States", "year": 2021, "carbon_intensity": 379, "timestamp": 4}
+{"type": "datacenter_announcement", "id": "dcC", "location": "United States", "year": 2020, "carbon_intensity": 369, "timestamp": 5}
+{"type": "datacenter_announcement", "id": "dcC", "location": "United States", "year": 2019, "carbon_intensity": 393, "timestamp": 6}
+{"type": "datacenter_announcement", "id": "dcC", "location": "United States", "year": 2018, "carbon_intensity": 412, "timestamp": 7}
+{"type": "datacenter_announcement", "id": "dcB", "location": "Morocco", "year": 2021, "carbon_intensity": 631, "timestamp": 8}
+{"type": "datacenter_announcement", "id": "dcB", "location": "Morocco", "year": 2020, "carbon_intensity": 642, "timestamp": 9}
+{"type": "datacenter_announcement", "id": "dcB", "location": "Morocco", "year": 2019, "carbon_intensity": 627, "timestamp": 10}
+{"type": "datacenter_announcement", "id": "dcB", "location": "Morocco", "year": 2018, "carbon_intensity": 627, "timestamp": 11}
diff --git a/jsonAlgo.cpp b/jsonAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9f9005da7b81350906627fe1cf59c9908c48583f
--- /dev/null
+++ b/jsonAlgo.cpp
@@ -0,0 +1,108 @@
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <vector>
+#include <limits>
+#include <nlohmann/json.hpp>
+//Author Karim/Adem
+using json = nlohmann::json;
+
+struct ProfileInfo {
+    std::string id;
+    std::string datacenter;
+    int year;
+    int carbon_emission;
+};
+
+std::string extractDatacenterFromId(const std::string& id) {
+    size_t pos = id.find_last_of('_');
+    return pos != std::string::npos ? id.substr(0, pos) : "";
+}
+
+int extractYearFromId(const std::string& id) {
+    size_t pos = id.find_last_of('_');
+    return pos != std::string::npos ? std::stoi(id.substr(pos + 1)) : -1;
+}
+
+ProfileInfo findOptimalEmissionByYear(const std::vector<ProfileInfo>& profiles, int year) {
+    ProfileInfo optimalProfile;
+    int minEmission = std::numeric_limits<int>::max();
+
+    for (const auto& profile : profiles) {
+        if (profile.year == year && profile.carbon_emission < minEmission) {
+            minEmission = profile.carbon_emission;
+            optimalProfile = profile;
+        }
+    }
+
+    return optimalProfile;
+}
+
+ProfileInfo findGlobalOptimalEmission(const std::vector<ProfileInfo>& profiles) {
+    ProfileInfo optimalProfile;
+    int minEmission = std::numeric_limits<int>::max();
+
+    for (const auto& profile : profiles) {
+        if (profile.carbon_emission < minEmission) {
+            minEmission = profile.carbon_emission;
+            optimalProfile = profile;
+        }
+    }
+
+    return optimalProfile;
+}
+
+int main() {
+    std::string filePath = "jsonInput.json";
+    std::ifstream inputFile(filePath);
+    if (!inputFile.is_open()) {
+        std::cerr << "Erreur lors de l'ouverture du fichier : " << filePath << std::endl;
+        return -1;
+    }
+
+    json jsonData;
+    inputFile >> jsonData;
+
+    std::vector<ProfileInfo> profiles;
+
+    for (auto& profile : jsonData["profiles"].items()) {
+        std::string emissionStr = profile.value()["carbon_emission"].get<std::string>();
+        int emission = std::stoi(emissionStr.substr(0, emissionStr.size() - 2)); // Enlever "kg" et convertir en entier
+
+        ProfileInfo pInfo;
+        pInfo.id = profile.key();
+        pInfo.datacenter = extractDatacenterFromId(pInfo.id);
+        pInfo.year = extractYearFromId(pInfo.id);
+        pInfo.carbon_emission = emission;
+        profiles.push_back(pInfo);
+    }
+
+    int choice;
+    std::cout << "Choisissez une option :\n1. Trouver l'empreinte carbone la plus faible pour une année spécifique\n2. Trouver l'empreinte carbone globale la plus faible\nVotre choix : ";
+    std::cin >> choice;
+
+    if (choice == 1) {
+        int year;
+        std::cout << "Entrez l'année : ";
+        std::cin >> year;
+        ProfileInfo optimalProfile = findOptimalEmissionByYear(profiles, year);
+        if (!optimalProfile.id.empty()) {
+            std::cout << "L'empreinte carbone la plus faible pour " << year << " est en " << optimalProfile.datacenter << " : " << optimalProfile.carbon_emission << "kg\n";
+        } else {
+            std::cout << "Aucune empreinte carbone trouvée pour l'année " << year << ".\n";
+        }
+    } else if (choice == 2) {
+        ProfileInfo globalOptimalProfile = findGlobalOptimalEmission(profiles);
+        if (!globalOptimalProfile.id.empty()) {
+            std::cout << "L'empreinte carbone globale la plus faible est :\n"
+                      << "Datacenter: " << globalOptimalProfile.datacenter << ", Année: " << globalOptimalProfile.year
+                      << ", Empreinte carbone: " << globalOptimalProfile.carbon_emission << "kg\n";
+        } else {
+            std::cout << "Aucune empreinte carbone globale optimale trouvée.\n";
+        }
+    } else {
+        std::cout << "Option invalide.\n";
+    }
+
+    return 0;
+}