|
@@ -49,15 +49,26 @@ instance::instance() {
|
|
|
}
|
|
|
|
|
|
int instance::find(pos p, int id, int quantity) { // cherche une warehouse proche de x/y
|
|
|
- int best = -1;
|
|
|
+ int best = -1, best_quantity = -1;
|
|
|
int d = 1000000000.;
|
|
|
for(int i = 0; i < W; i++) {
|
|
|
- if(wh[i].disp[id] > 0) {
|
|
|
+ if(wh[i].disp[id] >= best_quantity) {
|
|
|
int d2 = p.dist2(wh[i].p);
|
|
|
- if(d2 < d) {
|
|
|
+ if(best_quantity == quantity) {
|
|
|
+ if(d2 < d) {
|
|
|
+ d = d2;
|
|
|
+ best = i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if(wh[i].disp[id] > best_quantity) {
|
|
|
+ d = d2;
|
|
|
+ best = i;
|
|
|
+ }
|
|
|
+ else if(wh[i].disp[id] == best_quantity && d2 < d) {
|
|
|
d = d2;
|
|
|
best = i;
|
|
|
}
|
|
|
+ best_quantity = min(quantity, wh[i].disp[id]);
|
|
|
}
|
|
|
}
|
|
|
if(best < 0) {
|