Submission #3472899
Source Code Expand
using System; using System.Collections.Generic; using System.Linq; namespace ABC001 { public class ABC001_D { static void Main(string[] args) { ABC001_D instance = new ABC001_D(); instance.Answer(); } public class WhetherReport { public string rainDuration; public WhetherReport DataUpdate() { WhetherReport updatedReport = new WhetherReport(); int beginningRainTime = GetBeginningRainTime(); int endingRainTime = GetEndingRainTime(); beginningRainTime -= beginningRainTime % 5; int endingTimeDiff = (endingRainTime % 5); endingRainTime += (endingTimeDiff != 0 ? 5 - endingTimeDiff : 0); if (endingRainTime % 100 == 60) { endingRainTime += 40; } if (beginningRainTime % 100 == 60) { beginningRainTime += 40; } string begin = beginningRainTime.ToString().PadLeft(4, '0'); string end = endingRainTime.ToString().PadLeft(4, '0'); updatedReport.rainDuration = $"{begin}-{end}"; return updatedReport; } public override string ToString() { return $"{rainDuration}"; } public int GetBeginningRainTime() { return int.Parse(rainDuration.Split('-')[0]); } public int GetEndingRainTime() { return int.Parse(rainDuration.Split('-')[1]); } public bool IsBetweenTheDays(WhetherReport other) { bool betweenBeginRainTime = GetBeginningRainTime() <= other.GetBeginningRainTime() && other.GetBeginningRainTime() <= GetEndingRainTime(); return betweenBeginRainTime; } public override bool Equals(object obj) { var p = obj as WhetherReport; if (p == null) return false; return ToString().Equals(p.ToString()); } } public class WhetherReportComparer : IEqualityComparer<WhetherReport> { public bool Equals(WhetherReport i_lhs, WhetherReport i_rhs) { return i_lhs.rainDuration == i_rhs.rainDuration; } public int GetHashCode(WhetherReport i_obj) { return i_obj.rainDuration.GetHashCode(); } } public void Answer() { int rainNum = Int32.Parse(Console.ReadLine()); List<WhetherReport> whetherReports = new List<WhetherReport>(); for (int i = 0; i < rainNum; i++) { WhetherReport report = new WhetherReport(); report.rainDuration = Console.ReadLine(); whetherReports.Add(report); } WhetherReportComparer comparer = new WhetherReportComparer(); whetherReports = whetherReports.Distinct(comparer).ToList(); whetherReports = whetherReports.Select(d => d.DataUpdate()).ToList(); whetherReports = whetherReports.Distinct(comparer).ToList(); whetherReports.Sort((a, b) => a.GetBeginningRainTime() - b.GetBeginningRainTime()); List<WhetherReport> foldingReports = new List<WhetherReport>(); var beginFoldingReport = whetherReports[0]; for (int i = 1; i < whetherReports.Count; i++) { var nextReport = whetherReports[i]; if (beginFoldingReport.IsBetweenTheDays(nextReport)) { WhetherReport combineReport = new WhetherReport(); if (beginFoldingReport.GetEndingRainTime() <= nextReport.GetEndingRainTime()) { var beginTime = beginFoldingReport.GetBeginningRainTime().ToString().PadLeft(4, '0'); var endTime = nextReport.GetEndingRainTime().ToString().PadLeft(4, '0'); combineReport.rainDuration = $"{beginTime}-{endTime}"; } else { var beginTime = beginFoldingReport.GetBeginningRainTime().ToString().PadLeft(4, '0'); var endTime = beginFoldingReport.GetEndingRainTime().ToString().PadLeft(4, '0'); combineReport.rainDuration = $"{beginTime}-{endTime}"; } beginFoldingReport = combineReport; } else { foldingReports.Add(beginFoldingReport); beginFoldingReport = nextReport; } } foldingReports.Add(beginFoldingReport); foreach (var whetherReport in foldingReports) { Console.WriteLine(whetherReport.ToString()); } } } }
Submission Info
Submission Time | |
---|---|
Task | D - 感雨時刻の整理 |
User | sim_mokomo |
Language | C# (Mono 4.6.2.0) |
Score | 100 |
Code Size | 5378 Byte |
Status | AC |
Exec Time | 465 ms |
Memory | 27848 KB |
Judge Result
Set Name | all | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
all | 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, cho_cho_chokudai.txt, chokudai_ga_cho.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_01.txt | AC | 27 ms | 9428 KB |
00_sample_02.txt | AC | 26 ms | 11476 KB |
00_sample_03.txt | AC | 27 ms | 11476 KB |
cho_cho_chokudai.txt | AC | 35 ms | 9696 KB |
chokudai_ga_cho.txt | AC | 465 ms | 27120 KB |
test_01.txt | AC | 29 ms | 11476 KB |
test_02.txt | AC | 29 ms | 11476 KB |
test_03.txt | AC | 29 ms | 11476 KB |
test_04.txt | AC | 29 ms | 11476 KB |
test_05.txt | AC | 29 ms | 11476 KB |
test_06.txt | AC | 31 ms | 11476 KB |
test_07.txt | AC | 29 ms | 11476 KB |
test_08.txt | AC | 29 ms | 11476 KB |
test_09.txt | AC | 28 ms | 13504 KB |
test_10.txt | AC | 28 ms | 11456 KB |
test_11.txt | AC | 27 ms | 9408 KB |
test_12.txt | AC | 31 ms | 11452 KB |
test_13.txt | AC | 30 ms | 11476 KB |
test_14.txt | AC | 34 ms | 13548 KB |
test_15.txt | AC | 33 ms | 13472 KB |
test_16.txt | AC | 30 ms | 11476 KB |
test_17.txt | AC | 36 ms | 11460 KB |
test_18.txt | AC | 30 ms | 9428 KB |
test_19.txt | AC | 35 ms | 15532 KB |
test_20.txt | AC | 35 ms | 11436 KB |
test_21.txt | AC | 249 ms | 23732 KB |
test_22.txt | AC | 350 ms | 27848 KB |
test_23.txt | AC | 289 ms | 23736 KB |
test_24.txt | AC | 357 ms | 25792 KB |
test_25.txt | AC | 338 ms | 21740 KB |
test_26.txt | AC | 46 ms | 20320 KB |
test_27.txt | AC | 36 ms | 11744 KB |
test_28.txt | AC | 70 ms | 21216 KB |
test_29.txt | AC | 27 ms | 11476 KB |
test_30.txt | AC | 28 ms | 11476 KB |
test_31.txt | AC | 37 ms | 13536 KB |
test_32.txt | AC | 27 ms | 11476 KB |
test_33.txt | AC | 46 ms | 15584 KB |
test_34.txt | AC | 27 ms | 11476 KB |
test_35.txt | AC | 29 ms | 9428 KB |
test_36.txt | AC | 400 ms | 27064 KB |
test_37.txt | AC | 52 ms | 18784 KB |
test_38.txt | AC | 47 ms | 18400 KB |
test_39.txt | AC | 90 ms | 22332 KB |
test_40.txt | AC | 93 ms | 24256 KB |
test_41.txt | AC | 38 ms | 11744 KB |
test_42.txt | AC | 39 ms | 13792 KB |
test_43.txt | AC | 38 ms | 15712 KB |