#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <sstream>
#include <algorithm>
using namespace std;
class Klasemen {
private:
map<string, int> dataPoin;
public:
void catatPermainan(string klubKandang, string klubTandang, string skor) {
int skorKandang, skorTandang;
sscanf(skor.c_str(), "%d:%d", &skorKandang, &skorTandang);
if (dataPoin.find(klubKandang) == dataPoin.end()) dataPoin[klubKandang] = 0;
if (dataPoin.find(klubTandang) == dataPoin.end()) dataPoin[klubTandang] = 0;
if (skorKandang > skorTandang) {
dataPoin[klubKandang] += 3;
} else if (skorKandang < skorTandang) {
dataPoin[klubTandang] += 3;
} else {
dataPoin[klubKandang] += 1;
dataPoin[klubTandang] += 1;
}
}
vector<pair<string, int>> cetakKlasemen() {
vector<pair<string, int>> klasemen(dataPoin.begin(), dataPoin.end());
sort(klasemen.begin(), klasemen.end(), [](auto &a, auto &b) {
if (a.second != b.second)
return a.second > b.second;
return a.first < b.first;
});
return klasemen;
}
string ambilPeringkat(int nomorPeringkat) {
auto klasemen = cetakKlasemen();
if (nomorPeringkat <= 0 || nomorPeringkat > klasemen.size()) {
return "Peringkat tidak ditemukan.";
}
return klasemen[nomorPeringkat - 1].first;
}
};
int main() {
Klasemen klasemen;
cout << "Masukkan pertandingan antar 3 klub (total 6 pertandingan):\n";
cout << "Format input: <KlubKandang> <KlubTandang> <Skor> (contoh: Persija Arema 2:1)\n\n";
int jumlahPertandingan = 6;
for (int i = 1; i <= jumlahPertandingan; ++i) {
string kandang, tandang, skor;
cout << "Pertandingan ke-" << i << ": ";
cin >> kandang >> tandang >> skor;
klasemen.catatPermainan(kandang, tandang, skor);
}
// Cetak klasemen akhir
vector<pair<string, int>> hasil = klasemen.cetakKlasemen();
cout << "\n--- Klasemen Akhir ---\n";
for (int i = 0; i < hasil.size(); ++i) {
cout << i + 1 << ". " << hasil[i].first << " - " << hasil[i].second << " poin" << endl;
}
return 0;
}