結果
問題 | No.447 ゆきこーだーの雨と雪 (2) |
ユーザー |
![]() |
提出日時 | 2016-11-19 15:53:46 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 348 ms / 2,000 ms |
コード長 | 3,220 bytes |
コンパイル時間 | 2,731 ms |
コンパイル使用メモリ | 107,648 KB |
実行使用メモリ | 22,912 KB |
最終ジャッジ日時 | 2024-11-26 21:52:33 |
合計ジャッジ時間 | 7,842 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;using System.Collections.Generic;class Problem{public char Name { get; set; }public int Level { get; set; }public int Solve { get; set; } = 0;public Problem(int level){Level = level;}public static int GetId(char name){return name - 'A';}}class Submit{public string Name { get; set; }public char ProblemName { get; set; }public Submit(string name, char problemName){Name = name;ProblemName = problemName;}}class Participant : IEquatable<Participant>, IComparable<Participant>{public string Name { get; set; }public List<int> Score { get; set; }public int ScoreSum { get; set; } = 0;public int LastSubmit { get; set; }public Participant(string name){Name = name;}public Participant(string name, int problemNum, int lastSubmit){Name = name;Score = new List<int>();for (int i = 0; i < problemNum; i++) Score.Add(0);LastSubmit = lastSubmit;}bool IEquatable<Participant>.Equals(Participant p){if (p == null) return false;else return (Name == p.Name);}public int CompareTo(Participant p){if (ScoreSum.CompareTo(p.ScoreSum) == 0)return LastSubmit.CompareTo(p.LastSubmit);elsereturn p.ScoreSum.CompareTo(ScoreSum);}public void Solve(int no, int level, int rank){Score[no] = 50 * level + (500 * level / (8 + 2 * rank));ScoreSum += Score[no];}}class Program{static void Main(){int N = int.Parse(Console.ReadLine());var problemList = new List<Problem>(N);string[] strtmp = Console.ReadLine().Split(' ');for (int i = 0; i < N; i++)problemList.Add(new Problem(int.Parse(strtmp[i])));int T = int.Parse(Console.ReadLine());var submitList = new List<Submit>(T);var participantList = new List<Participant>();for (int i = 0; i < T; i++){strtmp = Console.ReadLine().Split(' ');submitList.Add(new Submit(strtmp[0], char.Parse(strtmp[1])));if (!participantList.Contains(new Participant(submitList[i].Name)))participantList.Add(new Participant(submitList[i].Name, N, i));int tmpProblemNo =Problem.GetId(submitList[i].ProblemName);int tmpParticipantNo =participantList.IndexOf(new Participant(submitList[i].Name));problemList[tmpProblemNo].Solve++;participantList[tmpParticipantNo].Solve(tmpProblemNo, problemList[tmpProblemNo].Level, problemList[tmpProblemNo].Solve);participantList[tmpParticipantNo].LastSubmit = i;}participantList.Sort();for (int i = 0; i < participantList.Count; i++){Console.Write((i + 1) + " " + participantList[i].Name + " ");for (int j = 0; j < problemList.Count; j++)Console.Write(participantList[i].Score[j] + " ");Console.WriteLine(participantList[i].ScoreSum);}}}