using System;
public class Test
{
public static void Main()
{
// your code goes here
Klasemen klasemen = new Klasemen();
klasemen.CatatPermainan("Arsenal", "Liverpool", "2:1");
klasemen.CatatPermainan("Arsenal", "Chelsea", "1:1");
klasemen.CatatPermainan("Chelsea", "Arsenal", "0:3");
klasemen.CatatPermainan("Chelsea", "Liverpool", "3:2");
klasemen.CatatPermainan("Liverpool", "Arsenal", "2:2");
klasemen.CatatPermainan("Liverpool", "Chelsea", "0:0");
var array = klasemen.CetakKlasemen();
foreach (var item in array)
{
Console.WriteLine("{0}", item);
}
string klub = klasemen.AmbilPeringkat(2);
Console.WriteLine(klub);
}
}
public class Klasemen
{
private Dictionary<string, int> TabelKlasemen = new Dictionary<string, int>();
private enum Poin
{
Menang = 3,
Seri = 1,
Kalah = 0,
}
public void CatatPermainan(string klubKandang, string klubTandang, string skor)
{
string[] goal = skor.Split(':');
int goalKandang = int.Parse(goal[0]);
int goalTandang = int.Parse(goal[1]);
int poinKandang = 0;
int poinTandang = 0;
// Cek apa sudah ada klub kandang dan poinnya
if (TabelKlasemen.ContainsKey(klubKandang))
{
poinKandang = TabelKlasemen[klubKandang];
}
// Cek apa sudah ada klub tandang dan poinnya
if (TabelKlasemen.ContainsKey(klubTandang))
{
poinTandang = TabelKlasemen[klubTandang];
}
// Kalkulasi poin
if (goalKandang > goalTandang)
{
CatatKlasemen(klubKandang, poinKandang + (int)Poin.Menang);
}
else if (goalTandang > goalKandang)
{
CatatKlasemen(klubTandang, poinTandang + (int)Poin.Menang);
}
else
{
CatatKlasemen(klubKandang, poinKandang + (int)Poin.Seri);
CatatKlasemen(klubTandang, poinTandang + (int)Poin.Seri);
}
}
private void CatatKlasemen(string klub, int poin)
{
if (TabelKlasemen.ContainsKey(klub))
{
TabelKlasemen[klub] = poin;
}
else
{
TabelKlasemen.Add(klub, poin);
}
}
public Array CetakKlasemen()
{
var tabel = TabelKlasemen.ToArray();
return tabel;
}
public string AmbilPeringkat(int nomorPeringkat)
{
var sortedKlasemen = TabelKlasemen.OrderByDescending(x => x.Value).ToList();
return sortedKlasemen[nomorPeringkat-1].Key;
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQogICAgewogICAgICAgIC8vIHlvdXIgY29kZSBnb2VzIGhlcmUKICAgICAgICBLbGFzZW1lbiBrbGFzZW1lbiA9IG5ldyBLbGFzZW1lbigpOwogICAgICAgIGtsYXNlbWVuLkNhdGF0UGVybWFpbmFuKCJBcnNlbmFsIiwgIkxpdmVycG9vbCIsICIyOjEiKTsKICAgICAgICBrbGFzZW1lbi5DYXRhdFBlcm1haW5hbigiQXJzZW5hbCIsICJDaGVsc2VhIiwgIjE6MSIpOwogICAgICAgIGtsYXNlbWVuLkNhdGF0UGVybWFpbmFuKCJDaGVsc2VhIiwgIkFyc2VuYWwiLCAiMDozIik7CiAgICAgICAga2xhc2VtZW4uQ2F0YXRQZXJtYWluYW4oIkNoZWxzZWEiLCAiTGl2ZXJwb29sIiwgIjM6MiIpOwogICAgICAgIGtsYXNlbWVuLkNhdGF0UGVybWFpbmFuKCJMaXZlcnBvb2wiLCAiQXJzZW5hbCIsICIyOjIiKTsKICAgICAgICBrbGFzZW1lbi5DYXRhdFBlcm1haW5hbigiTGl2ZXJwb29sIiwgIkNoZWxzZWEiLCAiMDowIik7CgogICAgICAgIHZhciBhcnJheSA9IGtsYXNlbWVuLkNldGFrS2xhc2VtZW4oKTsKICAgICAgICBmb3JlYWNoICh2YXIgaXRlbSBpbiBhcnJheSkKICAgICAgICB7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJ7MH0iLCBpdGVtKTsgICAgCiAgICAgICAgfQoKICAgICAgICBzdHJpbmcga2x1YiA9IGtsYXNlbWVuLkFtYmlsUGVyaW5na2F0KDIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKGtsdWIpOwogICAgfQp9CgpwdWJsaWMgY2xhc3MgS2xhc2VtZW4KewogICAgcHJpdmF0ZSBEaWN0aW9uYXJ5PHN0cmluZywgaW50PiBUYWJlbEtsYXNlbWVuID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBpbnQ+KCk7CgogICAgcHJpdmF0ZSBlbnVtIFBvaW4KICAgIHsKICAgICAgICBNZW5hbmcgPSAzLAogICAgICAgIFNlcmkgPSAxLAogICAgICAgIEthbGFoID0gMCwKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBDYXRhdFBlcm1haW5hbihzdHJpbmcga2x1YkthbmRhbmcsIHN0cmluZyBrbHViVGFuZGFuZywgc3RyaW5nIHNrb3IpCiAgICB7CiAgICAgICAgc3RyaW5nW10gZ29hbCA9IHNrb3IuU3BsaXQoJzonKTsKICAgICAgICBpbnQgZ29hbEthbmRhbmcgPSBpbnQuUGFyc2UoZ29hbFswXSk7CiAgICAgICAgaW50IGdvYWxUYW5kYW5nID0gaW50LlBhcnNlKGdvYWxbMV0pOwoKICAgICAgICBpbnQgcG9pbkthbmRhbmcgPSAwOwogICAgICAgIGludCBwb2luVGFuZGFuZyA9IDA7CgogICAgICAgIC8vIENlayBhcGEgc3VkYWggYWRhIGtsdWIga2FuZGFuZyBkYW4gcG9pbm55YQogICAgICAgIGlmIChUYWJlbEtsYXNlbWVuLkNvbnRhaW5zS2V5KGtsdWJLYW5kYW5nKSkKICAgICAgICB7CiAgICAgICAgICAgIHBvaW5LYW5kYW5nID0gVGFiZWxLbGFzZW1lbltrbHViS2FuZGFuZ107CiAgICAgICAgfQoKICAgICAgICAvLyBDZWsgYXBhIHN1ZGFoIGFkYSBrbHViIHRhbmRhbmcgZGFuIHBvaW5ueWEKICAgICAgICBpZiAoVGFiZWxLbGFzZW1lbi5Db250YWluc0tleShrbHViVGFuZGFuZykpCiAgICAgICAgewogICAgICAgICAgICBwb2luVGFuZGFuZyA9IFRhYmVsS2xhc2VtZW5ba2x1YlRhbmRhbmddOwogICAgICAgIH0KCiAgICAgICAgLy8gS2Fsa3VsYXNpIHBvaW4KICAgICAgICBpZiAoZ29hbEthbmRhbmcgPiBnb2FsVGFuZGFuZykKICAgICAgICB7CiAgICAgICAgICAgIENhdGF0S2xhc2VtZW4oa2x1YkthbmRhbmcsIHBvaW5LYW5kYW5nICsgKGludClQb2luLk1lbmFuZyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGdvYWxUYW5kYW5nID4gZ29hbEthbmRhbmcpCiAgICAgICAgewogICAgICAgICAgICBDYXRhdEtsYXNlbWVuKGtsdWJUYW5kYW5nLCBwb2luVGFuZGFuZyArIChpbnQpUG9pbi5NZW5hbmcpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBDYXRhdEtsYXNlbWVuKGtsdWJLYW5kYW5nLCBwb2luS2FuZGFuZyArIChpbnQpUG9pbi5TZXJpKTsKICAgICAgICAgICAgQ2F0YXRLbGFzZW1lbihrbHViVGFuZGFuZywgcG9pblRhbmRhbmcgKyAoaW50KVBvaW4uU2VyaSk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgdm9pZCBDYXRhdEtsYXNlbWVuKHN0cmluZyBrbHViLCBpbnQgcG9pbikKICAgIHsKICAgICAgICBpZiAoVGFiZWxLbGFzZW1lbi5Db250YWluc0tleShrbHViKSkKICAgICAgICB7CiAgICAgICAgICAgIFRhYmVsS2xhc2VtZW5ba2x1Yl0gPSBwb2luOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBUYWJlbEtsYXNlbWVuLkFkZChrbHViLCBwb2luKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIEFycmF5IENldGFrS2xhc2VtZW4oKSAKICAgIHsKICAgICAgICB2YXIgdGFiZWwgPSBUYWJlbEtsYXNlbWVuLlRvQXJyYXkoKTsKCiAgICAgICAgcmV0dXJuIHRhYmVsOwogICAgfQoKICAgIHB1YmxpYyBzdHJpbmcgQW1iaWxQZXJpbmdrYXQoaW50IG5vbW9yUGVyaW5na2F0KQogICAgewogICAgICAgIHZhciBzb3J0ZWRLbGFzZW1lbiA9IFRhYmVsS2xhc2VtZW4uT3JkZXJCeURlc2NlbmRpbmcoeCA9PiB4LlZhbHVlKS5Ub0xpc3QoKTsKCiAgICAgICAgcmV0dXJuIHNvcnRlZEtsYXNlbWVuW25vbW9yUGVyaW5na2F0LTFdLktleTsKICAgIH0KfQo=