DataTable FormatMonitor(Contest con) { List <int> pids = new List <int>(); DataTable mon = new DataTable(); mon.Columns.Add("Имя участника"); foreach (Problem p in Problem.GetProblems(con.ID)) { mon.Columns.Add(p.ShortName); pids.Add(p.ID); } mon.Columns.Add("Всего решено"); mon.Columns.Add("Время"); mon.Columns.Add("Место"); List <UserData> uds = new List <UserData>(data.Values); uds.Sort(); for (int i = 0; i < uds.Count; i++) { DataRow dr = mon.NewRow(); dr["Имя участника"] = uds[i].DisplayName; for (int j = 0; j < pids.Count; j++) { if (uds[i].ProblemsInfo[pids[j]].Result > 0) { // Write a result to the problem's column dr[1 + j] = "<span style='color:blue;'>+"; if (uds[i].ProblemsInfo[pids[j]].Result != 1) { dr[1 + j] += (uds[i].ProblemsInfo[pids[j]].Result - 1).ToString(); } dr[1 + j] += "</span><span style='font-size:smaller;display:block;'>("; dr[1 + j] += TimeUtils.BeautifyTimeSpan( TimeUtils.ZeroTimeSpan(uds[i].ProblemsInfo[pids[j]].AcTime - con.Beginning), true); dr[1 + j] += ")</span>"; } else if (uds[i].ProblemsInfo[pids[j]].Result < 0) { dr[1 + j] = "<span style='color:red;'>"; dr[1 + j] += uds[i].ProblemsInfo[pids[j]].Result.ToString(); dr[1 + j] += "</span>"; } else { dr[1 + j] = ""; } } dr["Всего решено"] = uds[i].SolvedCount; dr["Время"] = uds[i].Penalty; dr["Место"] = i + 1; mon.Rows.Add(dr); } return(mon); }