public static async Task RunMyChild() { var request = new UserStatusRequest(); var submissions = await request.GetUserSubmissionsAsync("Laggy", from : 1, count : 10); var anotherRequest = new UserInfoRequest(); var user = anotherRequest.GetUserInfo("Laggy"); var users = await anotherRequest.GetUsersInfoAsync(new [] { "Laggy", "majk", "tourist" }); var yetAnotherRequest = new ContestRatingChangesRequest(); var changes = await yetAnotherRequest.GetRatingChangesAsync(contestId : 1000); foreach (var change in changes) { Console.WriteLine($"{change.Handle} has got {change.NewRating - change.OldRating}"); } }
static void Main(string[] args) { List <ICPCTeam> icpcTeams = new List <ICPCTeam>(); using (SqlConnection con = new SqlConnection("Data Source = 192.168.134.133, 1433; Network Library=DBMSSOCN; Initial Catalog = DB; User ID = sa; Password = pw")) { con.Open(); SqlCommand cmd = new SqlCommand("SELECT * FROM _ICPCEntries", con); var reader = cmd.ExecuteReader(); while (reader.Read()) { icpcTeams.Add(new ICPCTeam() { Country = reader["Country"] as string, University = reader["University"] as string, Member1 = reader["Member1"] as string, Member2 = reader["Member2"] as string, Member3 = reader["Member3"] as string, TeamRating = 0 }); } } foreach (var team in icpcTeams) { List <string> members = new List <string>(); if (!string.IsNullOrEmpty(team.Member1)) { members.Add(team.Member1); } if (!string.IsNullOrEmpty(team.Member2)) { members.Add(team.Member2); } if (!string.IsNullOrEmpty(team.Member3)) { members.Add(team.Member3); } List <double> ratings = new List <double>(); foreach (var member in members) { var req = new UserInfoRequest(); var user = req.GetUserInfo(member); ratings.Add(user.Rating); Thread.Sleep(150); } var teamRating = cfapi.Helpers.CodeforcesHelper.AggregateRatings(ratings); team.TeamRating = teamRating; } icpcTeams = icpcTeams.OrderByDescending(i => i.TeamRating).ToList(); int rank = 1; Console.WriteLine("<table><thead><tr><th>Rank</th> <th>Country</th> <th>University</th> <th>Member1</th> <th>Member2</th> <th>Member3</th> <th>Team Rating</th></tr> </thead>"); foreach (var team in icpcTeams) { if (team.TeamRating == 1.0) { Console.WriteLine($"<tr> <td>{rank++}</td> <td>{team.Country}</td> <td>{team.University}</td> <td>{team.Member1}</td> <td>{team.Member2}</td> <td>{team.Member3}</td> <td>{team.TeamRating}</td> </tr>"); } else { Console.WriteLine($"<tr> <td>{rank++}</td> <td>{team.Country}</td> <td>{team.University}</td> <td>[user:{team.Member1}]</td> <td>[user:{team.Member2}]</td> <td>[user:{team.Member3}]</td> <td>{team.TeamRating.ToString("0.###")}</td> </tr>"); } } Console.WriteLine("</table>"); Console.Read(); }
static void Main_Old(string[] args) { Dictionary <IOIEntry, int> scoreboard = new Dictionary <IOIEntry, int>(); Dictionary <string, string> nameHandleLookup = new Dictionary <string, string>(); Dictionary <string, string> nameCodeLookup = new Dictionary <string, string>(); Dictionary <string, string> codeHandleLookup = new Dictionary <string, string>(); var wc = new HttpClient(); var scoresRaw = File.ReadAllText("scores.txt"); var scoresJson = JsonConvert.DeserializeObject <dynamic>(scoresRaw); var usersRaw = File.ReadAllText("users.txt"); var usersJson = JsonConvert.DeserializeObject <dynamic>(usersRaw); foreach (var entry in usersJson) { foreach (var data in entry) { nameCodeLookup.Add(data["f_name"].ToString() + " " + data["l_name"].ToString(), entry.Name.ToString()); //Console.WriteLine(entry.Name + " " + data["f_name"] + " " + data["l_name"]); } } var ioiHandles = new StreamReader("handles.txt"); string line; while ((line = ioiHandles.ReadLine()) != null) { string name = ""; var data = line.Split('\t'); for (int i = 0; i < data.Length - 1; i++) { name += data[i] + " "; } name = name.TrimEnd(); if (data.Length < 3) { continue; } nameHandleLookup.Add(name, data.Last()); scoreboard.Add(new IOIEntry() { Name = name, CountryCode = nameCodeLookup.FirstOrDefault(i => i.Key == name).Value }, 0); } foreach (var entry in nameHandleLookup) { var key = nameCodeLookup.FirstOrDefault(i => i.Key.ToLower() == entry.Key.ToLower()).Value; var val = nameHandleLookup.FirstOrDefault(i => i.Key.ToLower() == entry.Key.ToLower()).Value; codeHandleLookup.Add(key, val); } foreach (var entry in scoresJson) { foreach (var data in entry) { //Console.WriteLine(entry.Name); foreach (var prb in data) { var usr = scoreboard.FirstOrDefault(i => i.Key.CountryCode == entry.Name.ToString()); if (usr.Key == null) { continue; } switch (prb.Name.ToString()) { case "rect": usr.Key.P1 = prb.Value; break; case "shoes": usr.Key.P2 = prb.Value; break; case "split": usr.Key.P3 = prb.Value; break; case "line": usr.Key.P4 = prb.Value; break; case "vision": usr.Key.P5 = prb.Value; break; case "walk": usr.Key.P6 = prb.Value; break; } } } } foreach (var entry in scoreboard) { entry.Key.Day1Total = entry.Key.P1 + entry.Key.P2 + entry.Key.P3; entry.Key.Day2Total = entry.Key.P4 + entry.Key.P5 + entry.Key.P6; entry.Key.Total = entry.Key.Day1Total + entry.Key.Day2Total; } foreach (var entry in scoreboard) { var handle = codeHandleLookup.FirstOrDefault(i => i.Key == entry.Key.CountryCode).Value; if (!String.IsNullOrEmpty(handle)) { var req = new UserInfoRequest(); var usr = req.GetUserInfo(handle); if (usr.Rating != 0) { Console.WriteLine($"{usr.Rating}\t{entry.Key.Total}"); } Thread.Sleep(250); } } //foreach(var entry in nameHandleLookup) //{ // var usr = nameCodeLookup.Count(i => i.Key.ToLower() == entry.Key.ToLower()); // if (usr == 0) // { // Console.WriteLine(entry.Key); // } //} Console.Read(); }