fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <map>
  4. #include <vector>
  5. #include <sstream>
  6. #include <algorithm>
  7.  
  8. using namespace std;
  9.  
  10. class Klasemen {
  11. private:
  12. map<string, int> dataPoin;
  13.  
  14. public:
  15. void catatPermainan(string klubKandang, string klubTandang, string skor) {
  16. int skorKandang, skorTandang;
  17. sscanf(skor.c_str(), "%d:%d", &skorKandang, &skorTandang);
  18.  
  19. if (dataPoin.find(klubKandang) == dataPoin.end()) dataPoin[klubKandang] = 0;
  20. if (dataPoin.find(klubTandang) == dataPoin.end()) dataPoin[klubTandang] = 0;
  21.  
  22. if (skorKandang > skorTandang) {
  23. dataPoin[klubKandang] += 3;
  24. } else if (skorKandang < skorTandang) {
  25. dataPoin[klubTandang] += 3;
  26. } else {
  27. dataPoin[klubKandang] += 1;
  28. dataPoin[klubTandang] += 1;
  29. }
  30. }
  31.  
  32. vector<pair<string, int>> cetakKlasemen() {
  33. vector<pair<string, int>> klasemen(dataPoin.begin(), dataPoin.end());
  34.  
  35. sort(klasemen.begin(), klasemen.end(), [](auto &a, auto &b) {
  36. if (a.second != b.second)
  37. return a.second > b.second;
  38. return a.first < b.first;
  39. });
  40.  
  41. return klasemen;
  42. }
  43.  
  44. string ambilPeringkat(int nomorPeringkat) {
  45. auto klasemen = cetakKlasemen();
  46. if (nomorPeringkat <= 0 || nomorPeringkat > klasemen.size()) {
  47. return "Peringkat tidak ditemukan.";
  48. }
  49. return klasemen[nomorPeringkat - 1].first;
  50. }
  51. };
  52.  
  53. int main() {
  54. Klasemen klasemen;
  55.  
  56. cout << "Masukkan pertandingan antar 3 klub (total 6 pertandingan):\n";
  57. cout << "Format input: <KlubKandang> <KlubTandang> <Skor> (contoh: Persija Arema 2:1)\n\n";
  58.  
  59. int jumlahPertandingan = 6;
  60. for (int i = 1; i <= jumlahPertandingan; ++i) {
  61. string kandang, tandang, skor;
  62. cout << "Pertandingan ke-" << i << ": ";
  63. cin >> kandang >> tandang >> skor;
  64. klasemen.catatPermainan(kandang, tandang, skor);
  65. }
  66.  
  67. // Cetak klasemen akhir
  68. vector<pair<string, int>> hasil = klasemen.cetakKlasemen();
  69. cout << "\n--- Klasemen Akhir ---\n";
  70. for (int i = 0; i < hasil.size(); ++i) {
  71. cout << i + 1 << ". " << hasil[i].first << " - " << hasil[i].second << " poin" << endl;
  72. }
  73.  
  74. return 0;
  75. }
  76.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
Masukkan pertandingan antar 3 klub (total 6 pertandingan):
Format input: <KlubKandang> <KlubTandang> <Skor> (contoh: Persija Arema 2:1)

Pertandingan ke-1: Pertandingan ke-2: Pertandingan ke-3: Pertandingan ke-4: Pertandingan ke-5: Pertandingan ke-6: 
--- Klasemen Akhir ---
1.  - 12 poin