// Contoh Bab 12: penjadwalan kegiatan, greedy menurut waktu selesai. // // Compile: g++ -std=c++17 -O2 -o jadwal exercises/12/03-jadwal.cpp // Jalankan: ./jadwal // Contoh masukan: 5 // 1 4 // 3 5 // 0 6 // 5 7 // 8 9 #include #include using namespace std; struct Kegiatan { int mulai, selesai; }; Kegiatan keg[100005]; int main() { int n; cin >> n; for (int i = 0; i < n; i++) cin >> keg[i].mulai >> keg[i].selesai; sort(keg, keg + n, [](Kegiatan a, Kegiatan b) { return a.selesai < b.selesai; }); int banyak = 0; int waktu = -1000000000; for (int i = 0; i < n; i++) { if (keg[i].mulai >= waktu) { banyak++; waktu = keg[i].selesai; cout << "ambil kegiatan " << keg[i].mulai << ".." << keg[i].selesai << "\n"; } } cout << banyak << "\n"; return 0; }