Guillaume Koenig 7 years ago
parent
commit
f0134abce8
1 changed files with 20 additions and 6 deletions
  1. 20 6
      main.go

+ 20 - 6
main.go

@@ -116,25 +116,39 @@ func (c *Car) distanceTo(x, y int) int {
116
 	return abs(c.X-x) + abs(c.Y-y)
116
 	return abs(c.X-x) + abs(c.Y-y)
117
 }
117
 }
118
 
118
 
119
+func max(a, b int) int {
120
+	if a > b {
121
+		return a
122
+	} else {
123
+		return b
124
+	}
125
+}
126
+
119
 func Choose(c *Car) *Ride {
127
 func Choose(c *Car) *Ride {
120
 	var bestRide *Ride
128
 	var bestRide *Ride
121
 	bestLenOfRide := 0
129
 	bestLenOfRide := 0
122
 	bestTotal := 0
130
 	bestTotal := 0
123
-	for _, r := range Rides[1:] {
131
+	// fmt.Printf("car %d\n", c.ID)
132
+	for _, r := range Rides {
124
 		if r.used {
133
 		if r.used {
125
 			continue
134
 			continue
126
 		}
135
 		}
127
-		if r.f < c.EarliestFinish(r) {
128
-			continue
129
-		}
136
+		// if r.f < c.EarliestFinish(r) {
137
+		// 	continue
138
+		// }
139
+		// fmt.Printf("%d %d -> %d %d\n", r.a, r.b, r.x, r.y)
130
 		lenOfRide := r.length()
140
 		lenOfRide := r.length()
131
-		total := c.distanceTo(r.a, r.b) + lenOfRide
132
-		if bestRide == nil || lenOfRide*bestTotal < total*bestLenOfRide {
141
+		total := max(c.distanceTo(r.a, r.b), r.s-c.Arrival) + lenOfRide
142
+		// fmt.Printf("%d/%d\n", lenOfRide, total)
143
+		if bestRide == nil || lenOfRide*bestTotal > total*bestLenOfRide {
133
 			bestLenOfRide = lenOfRide
144
 			bestLenOfRide = lenOfRide
134
 			bestTotal = total
145
 			bestTotal = total
135
 			bestRide = r
146
 			bestRide = r
136
 		}
147
 		}
137
 	}
148
 	}
149
+	// if bestRide != nil {
150
+	// 	fmt.Printf("Picking %d %d -> %d %d\n", bestRide.a, bestRide.b, bestRide.x, bestRide.y)
151
+	// }
138
 	return bestRide
152
 	return bestRide
139
 }
153
 }
140
 
154