Submission #4568732


Source Code Expand

package main

import (
	"fmt"
	"sort"
	"strconv"
	"strings"
)

type TimeRange struct {
	Start int
	End int
}

type TimeRanges []TimeRange

func (trs TimeRanges) Len() int {
	return len(trs)
}

func (trs TimeRanges) Swap(i, j int) {
	trs[i], trs[j] = trs[j], trs[i]
}

func (trs TimeRanges) Less(i, j int) bool {
	return trs[i].Start < trs[j].Start
}

func roundUpTime(t int) int {
	r := t % 5
	if r != 0 {
		// tを5区切りに繰り上げて、下2桁が60だった場合は+40して時間を切り上げる
		t += 5 - r
		if t % 100 == 60 {
			t += 40
		}
	}

	return t
}

func roundDownTime(t int) int {
	r := t % 5

	return t - r
}

func main() {
	var n int
	fmt.Scan(&n)

	//ts := make([]TimeRange, n)
	var ts TimeRanges = make([]TimeRange, n)

	var row string
	for i:=0; i < n; i++ {
		fmt.Scan(&row)
		array := strings.Split(row, "-")

		s, _ := strconv.Atoi(array[0])
		e, _ := strconv.Atoi(array[1])
		ts[i] = TimeRange{roundDownTime(s), roundUpTime(e)}
	}

	// Start時間昇順ソート
	//sort.Slice(ts, func(i, j int) bool {
	//	return ts[i].Start < ts[j].Start
	//})
	sort.Sort(ts)

	var res []TimeRange
	for pos := 0; pos < len(ts); pos++{
		s := ts[pos].Start
		e := ts[pos].End
		for {
			if pos + 1 < len(ts) {
				if e >= ts[pos + 1].Start {
					if e <= ts[pos + 1].End {
						e = ts[pos+1].End
					}
					pos++
				} else {
					break
				}
			} else {
				break
			}
		}

		res = append(res, TimeRange{s, e})
	}

	for _, r := range res {
		fmt.Printf("%04d-%04d\n", r.Start, r.End)
	}
}

Submission Info

Submission Time
Task D - 感雨時刻の整理
User tez
Language Go (1.6)
Score 100
Code Size 1606 Byte
Status AC
Exec Time 208 ms
Memory 4096 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 1 ms 640 KB
00_sample_02.txt AC 1 ms 640 KB
00_sample_03.txt AC 1 ms 640 KB
cho_cho_chokudai.txt AC 203 ms 3968 KB
chokudai_ga_cho.txt AC 205 ms 3968 KB
test_01.txt AC 3 ms 640 KB
test_02.txt AC 3 ms 640 KB
test_03.txt AC 3 ms 640 KB
test_04.txt AC 3 ms 640 KB
test_05.txt AC 3 ms 640 KB
test_06.txt AC 3 ms 640 KB
test_07.txt AC 3 ms 640 KB
test_08.txt AC 2 ms 640 KB
test_09.txt AC 6 ms 640 KB
test_10.txt AC 6 ms 640 KB
test_11.txt AC 5 ms 640 KB
test_12.txt AC 4 ms 640 KB
test_13.txt AC 3 ms 640 KB
test_14.txt AC 6 ms 640 KB
test_15.txt AC 6 ms 640 KB
test_16.txt AC 3 ms 640 KB
test_17.txt AC 5 ms 640 KB
test_18.txt AC 3 ms 640 KB
test_19.txt AC 5 ms 640 KB
test_20.txt AC 5 ms 640 KB
test_21.txt AC 207 ms 3968 KB
test_22.txt AC 207 ms 3968 KB
test_23.txt AC 207 ms 3968 KB
test_24.txt AC 206 ms 3968 KB
test_25.txt AC 207 ms 3968 KB
test_26.txt AC 206 ms 3968 KB
test_27.txt AC 206 ms 3968 KB
test_28.txt AC 206 ms 4096 KB
test_29.txt AC 1 ms 640 KB
test_30.txt AC 2 ms 640 KB
test_31.txt AC 33 ms 1152 KB
test_32.txt AC 2 ms 640 KB
test_33.txt AC 136 ms 2816 KB
test_34.txt AC 1 ms 640 KB
test_35.txt AC 3 ms 640 KB
test_36.txt AC 207 ms 3968 KB
test_37.txt AC 206 ms 4096 KB
test_38.txt AC 207 ms 3968 KB
test_39.txt AC 207 ms 3968 KB
test_40.txt AC 206 ms 4096 KB
test_41.txt AC 205 ms 3968 KB
test_42.txt AC 208 ms 3968 KB
test_43.txt AC 204 ms 3968 KB