Browse Source

Better greedy

Olivier Marty 8 years ago
parent
commit
4de8fe366b
2 changed files with 17 additions and 4 deletions
  1. 14 3
      Olivier/instance.cpp
  2. 3 1
      Olivier/main.cpp

+ 14 - 3
Olivier/instance.cpp

@@ -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) {

+ 3 - 1
Olivier/main.cpp

@@ -46,7 +46,9 @@ void glouton(instance &ins) {
     // pass order
     cout << drone << " L " << wa << " " << type.first << " " << quantity << endl;
     cout << drone << " D " << next_i << " " << type.first << " " << quantity << endl;
-    score += ceil(100.*(ins.T-drone_temps[drone])/ins.T);
+
+    // compute score
+    score += ceil(10.*(ins.T-drone_temps[drone])/ins.T);
   }
   cerr << "Score : " << score << endl;
 }