Anda di halaman 1dari 3

NAMA: MAHARANI PUTRI TJAHYANINGSIH

KELAS: XID

NO.ABSEN: 18

#include <iostream>

#include <vector>

using namespace std;

int main() {

int N, M;

cout << "Masukkan jumlah pendonor DDS (1-1000): ";

cin >> N; // jumlah DDS

cout << "Masukkan jumlah desa (1 - 10): ";

cin >> M; // jumlah desa

vector<vector<vector<int>>> pendonor (M, vector<vector<int>>(4, vector<int>(2, 0)));

cout << "Masukkan kode desa, golongan darah (1-4), dan volume darah (0-500 ml ): " << endl;

for (int i = 0; i < N; i++) {

int kodeDesa, golonganDarah, volumeDarah;

cin >> kodeDesa >> golonganDarah >> volumeDarah;

pendonor[kodeDesa - 1][golonganDarah - 1][0]++;

pendonor[kodeDesa - 1][golonganDarah - 1][1] += volumeDarah;

// Menampilkan banyaknya pendonor dan total volume darah pada masing-masing desa

cout << "Berikut banyaknya pendonor dan total volume darahnya pada masing -masing desa: " <<
endl;

for (int i = 0; i < M; i++) {

cout << "Desa " << i + 1 << ":" << endl;

for (int j = 0; j < 4; j++) {

string golongan;
if (j == 0) golongan = "A";

else if (j == 1) golongan = "B";

else if (j == 2) golongan = "AB";

else golongan = "0";

cout << golongan << ": " << pendonor[i][j][0] << pendonor [i][j][1] << endl;

// Meminta informasi kebutuhan darah tambahan

int kodeGolonganDarah, tambahanVolumeDarah;

cout << "Masukkan kode golongan darah yang habis dan volume darah yang dibutuhkan (dalam
ml): " << endl;

cin >> kodeGolonganDarah >> tambahanVolumeDarah;

// Proses pencarian solusi

vector<int> desaTerpilih;

int sisaVolume = tambahanVolumeDarah;

for (int i = 0; i < M; i++) {

for (int j = i + 1; j < M; j++) {

if (pendonor [i] [kodeGolonganDarah - 1][1] + pendonor[j][kodeGolonganDarah - 1][1] >=


sisaVolume) {

desaTerpilih.push_back(i + 1);

desaTerpilih.push_back(j + 1);

sisaVolume = 0;

break;

if (sisaVolume == 0) {

break;

}
}

// Output hasil pencarian solusi

if (sisaVolume == 0) {

cout << "Desa yang akan dilaksanakan bakti golongan darah ";

if (kodeGolonganDarah == 1) {

cout << "A";

} else if (kodeGolonganDarah == 2) {

cout << "B";

} else if (kodeGolonganDarah == 3) {

cout << "O";

} else {

cout << "AB";

cout << "beserta jumlah darah yang dibutuhkan:" << endl;

for (int i = 0; i < desaTerpilih.size(); i++) {

cout << "Desa " << desaTerpilih[i] << " : " << pendonor[desaTerpilih [i]- 1][kodeGolonganDarah
- 1][1] << "ml" << endl;

cout << "Kebutuhan darah dipenuhi dengan surplus " << (pendonor[desaTerpilih[0] - 1]
[kodeGolonganDarah - 1][1] + pendonor[desaTerpilih [1] - 1][kodeGolonganDarah - 1][1]) -
tambahanVolumeDarah << "ml" << endl;

} else {

cout << "Kebutuhan darah masih kurang <<<<< sisaVolume <<< ml" << endl;

return 0;

Anda mungkin juga menyukai