Submission #1797130


Source Code Expand

using System;
using System.Globalization;

 using System.Collections.Generic;
 using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Threading;

// using System.Text;
public class Program
{
    public static void Main(string[] args)
    {
        // 雨の降っていた数
        var a = int.Parse(Console.ReadLine());
        // スペース区切りの整数の入力 Deg Dis
        var rainTimes = new List<RainTime>();
        for (var i = 0; i < a; i++)
        {
            var input = Console.ReadLine().Split('-');
            rainTimes.Add(new RainTime(input[0], input[1]));
        }
        
        rainTimes.Sort((x, y) => x.StartRain.CompareTo(y.StartRain));

        var outRainTimes = new List<RainTime>() {rainTimes[0]};

        foreach (var list in rainTimes)
        {
            if (list.StartRain.CompareTo(outRainTimes.Last().EndRain) > 0)
            {
                outRainTimes.Add(list);
            }

            if (list.StartRain.CompareTo(outRainTimes.Last().StartRain) >= 0)
            {

                if (list.StartRain.CompareTo(outRainTimes.Last().EndRain) == 1)
                {
                    continue;
                }

                if (list.EndRain.CompareTo(outRainTimes.Last().EndRain) == 0)
                {
                    continue;
                }
                else if (list.EndRain.CompareTo(outRainTimes.Last().EndRain) == 1)
                {
                    outRainTimes.Last().EndRain = list.EndRain;
                }
            }
        }

        foreach (var output in outRainTimes)
        {
            Console.WriteLine(output.OutStr());
        }
        Console.ReadLine();
    }

    class RainTime
    {

        private static readonly TimeSpan Interval = TimeSpan.FromMinutes(5);

        public RainTime(string start, string end)
        {
            
            var st = (start == "2400") ? TimeSpan.FromDays(1):TimeSpan.ParseExact(start, @"hhmm", null);
            var ed = (end == "2400") ? TimeSpan.FromDays(1) : TimeSpan.ParseExact(end, @"hhmm", null);
            
            // 丸める,start切捨て、end切上げ
            this.StartRain = new TimeSpan(((st.Ticks + Interval.Ticks) / Interval.Ticks - 1) * Interval.Ticks);
            this.EndRain = new TimeSpan((ed.Ticks + Interval.Ticks - 1) / Interval.Ticks * Interval.Ticks);
            
        }

        public TimeSpan StartRain { get; set; }
        public TimeSpan EndRain { get; set; }

        public string OutStr()
        {
            var outst = "";
            outst += (StartRain.Days == 1) ? "2400" : StartRain.ToString("hhmm");
            outst += "-";
            outst += (EndRain.Days == 1) ? "2400" : EndRain.ToString("hhmm");
            return outst;
        }
    }
}

Submission Info

Submission Time
Task D - 感雨時刻の整理
User Mikan
Language C# (Mono 4.6.2.0)
Score 100
Code Size 2888 Byte
Status AC
Exec Time 83 ms
Memory 20696 KB

Judge Result

Set Name all
Score / Max Score 100 / 100
Status
AC × 48
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 26 ms 11348 KB
00_sample_02.txt AC 27 ms 11348 KB
00_sample_03.txt AC 25 ms 9300 KB
cho_cho_chokudai.txt AC 77 ms 14552 KB
chokudai_ga_cho.txt AC 73 ms 18648 KB
test_01.txt AC 27 ms 13396 KB
test_02.txt AC 26 ms 11348 KB
test_03.txt AC 28 ms 13396 KB
test_04.txt AC 27 ms 11348 KB
test_05.txt AC 27 ms 11348 KB
test_06.txt AC 26 ms 9300 KB
test_07.txt AC 26 ms 9300 KB
test_08.txt AC 27 ms 13396 KB
test_09.txt AC 27 ms 11328 KB
test_10.txt AC 29 ms 13376 KB
test_11.txt AC 27 ms 11328 KB
test_12.txt AC 27 ms 11348 KB
test_13.txt AC 26 ms 11220 KB
test_14.txt AC 27 ms 11328 KB
test_15.txt AC 27 ms 11328 KB
test_16.txt AC 25 ms 9300 KB
test_17.txt AC 26 ms 9280 KB
test_18.txt AC 26 ms 9300 KB
test_19.txt AC 27 ms 9172 KB
test_20.txt AC 28 ms 13268 KB
test_21.txt AC 78 ms 16600 KB
test_22.txt AC 79 ms 20696 KB
test_23.txt AC 80 ms 18524 KB
test_24.txt AC 78 ms 16600 KB
test_25.txt AC 81 ms 14552 KB
test_26.txt AC 79 ms 14552 KB
test_27.txt AC 83 ms 20696 KB
test_28.txt AC 78 ms 14552 KB
test_29.txt AC 25 ms 11348 KB
test_30.txt AC 26 ms 9300 KB
test_31.txt AC 33 ms 9284 KB
test_32.txt AC 25 ms 9300 KB
test_33.txt AC 59 ms 14172 KB
test_34.txt AC 26 ms 11348 KB
test_35.txt AC 26 ms 9300 KB
test_36.txt AC 77 ms 14552 KB
test_37.txt AC 78 ms 20696 KB
test_38.txt AC 80 ms 20696 KB
test_39.txt AC 79 ms 16600 KB
test_40.txt AC 79 ms 14552 KB
test_41.txt AC 72 ms 16600 KB
test_42.txt AC 80 ms 18648 KB
test_43.txt AC 71 ms 16600 KB