|
@@ -3,6 +3,7 @@ package main
|
3
|
3
|
import (
|
4
|
4
|
"fmt"
|
5
|
5
|
"os"
|
|
6
|
+ "sort"
|
6
|
7
|
)
|
7
|
8
|
|
8
|
9
|
var input *os.File
|
|
@@ -29,6 +30,14 @@ type Ride struct {
|
29
|
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
|
41
|
type Scheduler interface {
|
33
|
42
|
Add(*Car)
|
34
|
43
|
Pop() *Car
|
|
@@ -65,6 +74,8 @@ func (c *Car) moveTo(x, y int) {
|
65
|
74
|
}
|
66
|
75
|
|
67
|
76
|
func Choose(c *Car) *Ride {
|
|
77
|
+ sort.Sort(ByEndtime(Rides))
|
|
78
|
+
|
68
|
79
|
for _, r := range Rides {
|
69
|
80
|
if !r.used {
|
70
|
81
|
return r
|