#include <iostream>
#include <map>
#include <string>
 
// Fungsi untuk mencetak hasil akhir jumlah pendonor
void cetakHasil(const std::map<std::string, int>& jumlahPendonor) {
    std::cout << "\n--- Ringkasan Jumlah Pendonor Darah per Desa ---\n";
    if (jumlahPendonor.empty()) {
        std::cout << "Belum ada data pendonor yang dimasukkan.\n";
    } else {
        for (const auto& pair : jumlahPendonor) {
            std::cout << "Desa " << pair.first << ": " << pair.second << " pendonor\n";
        }
    }
}
 
int main() {
    // std::map untuk menyimpan nama desa dan jumlah pendonor
    std::map<std::string, int> jumlahPendonor;
    std::string namaPendonor;
    std::string namaDesa;
    char inputLagi;
 
    std::cout << "===== Program Penghitung Pendonor Darah per Desa =====\n";
 
    do {
        // Menerima input nama pendonor
        std::cout << "\nMasukkan nama pendonor: ";
        std::cin.ignore(); // Membersihkan buffer input
        std::getline(std::cin, namaPendonor);
 
        // Menerima input nama desa
        std::cout << "Masukkan nama desa: ";
        std::getline(std::cin, namaDesa);
 
        // Menambahkan atau memperbarui jumlah pendonor untuk desa yang diberikan
        // Jika desa belum ada, map akan membuat entri baru dengan nilai 0, lalu ditambah 1
        jumlahPendonor[namaDesa]++;
 
        // Menanyakan apakah ingin memasukkan data lagi
        std::cout << "Ingin memasukkan data pendonor lagi? (y/n): ";
        std::cin >> inputLagi;
 
    } while (inputLagi == 'y' || inputLagi == 'Y');
 
    // Memanggil fungsi untuk mencetak hasil
    cetakHasil(jumlahPendonor);
 
    return 0;
}