#include <iostream>
#include <vector>
#include <string>
// Struktur untuk menyimpan data satu pendonor
struct Pendonor {
int desa;
std::string golongan_darah;
int volume; // ml
};
void run_program() {
int N, M; // N=Jumlah DDS (max 1000), M=Jumlah Desa (max 10)
// 1. Baca N dan M
if (!(std::cin >> N >> M)) return;
// Batasan input (Opsional, tapi disarankan)
if (N < 0 || N > 1000 || M < 0 || M > 10) {
std::cerr << "Peringatan: N atau M di luar batas yang ditentukan." << std::endl;
return;
}
std::vector<Pendonor> data_pendonor;
data_pendonor.reserve(N);
// 2. Baca N baris data pendonor
for (int i = 0; i < N; ++i) {
Pendonor p;
// Membaca Kode Desa, Golongan Darah, dan Volume Darah
if (!(std::cin >> p.desa >> p.golongan_darah >> p.volume)) {
std::cerr << "Error input data pendonor ke-" << i + 1 << std::endl;
break; // Keluar dari loop jika ada kesalahan input
}
// Pengecekan Batasan Data (Opsional)
if (p.desa < 1 || p.desa > M) {
std::cerr << "Peringatan: Kode desa tidak valid (" << p.desa << ") pada baris " << i + 1 << std::endl;
}
if (p.volume < 0 || p.volume > 500) {
std::cerr << "Peringatan: Volume darah tidak valid (" << p.volume << " ml) pada baris " << i + 1 << std::endl;
}
data_pendonor.push_back(p);
}
// --- Output Data yang Tersimpan (Opsional, untuk verifikasi) ---
std::cout << "\n--- Hasil Pembacaan ---\n";
std::cout << "Total DDS: " << data_pendonor.size() << ", Total Desa: " << M << "\n";
std::cout << "Desa | Gol. Darah | Volume (ml)\n";
std::cout << "---------------------------------\n";
for (const auto& p : data_pendonor) {
std::cout << p.desa << " \t | " << p.golongan_darah << " \t | " << p.volume << "\n";
}
}
int main() {
// Pengaturan I/O cepat
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
std::cout << "Masukkan N (jumlah DDS), M (jumlah desa), diikuti N baris data (Desa Golongan Volume):\n";
run_program();
return 0;
}