소스 검색

sort rides by end time

Gildas Chabot 7 년 전
부모
커밋
a40f6c790d
1개의 변경된 파일11개의 추가작업 그리고 0개의 파일을 삭제
  1. 11 0
      main.go

+ 11 - 0
main.go

@@ -3,6 +3,7 @@ package main
3
 import (
3
 import (
4
 	"fmt"
4
 	"fmt"
5
 	"os"
5
 	"os"
6
+	"sort"
6
 )
7
 )
7
 
8
 
8
 var input *os.File
9
 var input *os.File
@@ -29,6 +30,14 @@ type Ride struct {
29
 	used bool
30
 	used bool
30
 }
31
 }
31
 
32
 
33
+type ByEndtime []*Ride
34
+
35
+func (rs ByEndtime) Len() int      { return len(rs) }
36
+func (rs ByEndtime) Swap(i, j int) { rs[i], rs[j] = rs[j], rs[i] }
37
+func (rs ByEndtime) Less(i, j int) bool {
38
+	return rs[i].f < rs[j].f
39
+}
40
+
32
 type Scheduler interface {
41
 type Scheduler interface {
33
 	Add(*Car)
42
 	Add(*Car)
34
 	Pop() *Car
43
 	Pop() *Car
@@ -65,6 +74,8 @@ func (c *Car) moveTo(x, y int) {
65
 }
74
 }
66
 
75
 
67
 func Choose(c *Car) *Ride {
76
 func Choose(c *Car) *Ride {
77
+	sort.Sort(ByEndtime(Rides))
78
+
68
 	for _, r := range Rides {
79
 	for _, r := range Rides {
69
 		if !r.used {
80
 		if !r.used {
70
 			return r
81
 			return r