|
@@ -2,6 +2,22 @@
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
+instance ins;
|
|
|
+
|
|
|
+int dist2_wh(const order &a) {
|
|
|
+ int r = 1000000000;
|
|
|
+ for(int i = 0; i < ins.W; i++) {
|
|
|
+ r = min(r, a.p.dist2(ins.wh[i].p));
|
|
|
+ }
|
|
|
+ return r;
|
|
|
+}
|
|
|
+
|
|
|
+bool sort_ord(const order &a, const order &b) {
|
|
|
+ if(a.ord.size() == b.ord.size())
|
|
|
+ return dist2_wh(a) < dist2_wh(b);
|
|
|
+ return a.ord.size() < b.ord.size();
|
|
|
+}
|
|
|
+
|
|
|
int next(instance &ins) {
|
|
|
int best = -1;
|
|
|
for(int i = 0; i < ins.orders.size(); i++) {
|
|
@@ -14,6 +30,8 @@ int next(instance &ins) {
|
|
|
}
|
|
|
|
|
|
void glouton(instance &ins) {
|
|
|
+ sort(ins.orders.begin(), ins.orders.end(), sort_ord);
|
|
|
+ cerr << ins.orders[0].ord.size() << endl;
|
|
|
vector<int> drone_temps(ins.drones);
|
|
|
vector<pos> drone_pos;
|
|
|
int score = 0;
|
|
@@ -45,7 +63,7 @@ void glouton(instance &ins) {
|
|
|
|
|
|
// pass order
|
|
|
cout << drone << " L " << wa << " " << type.first << " " << quantity << endl;
|
|
|
- cout << drone << " D " << next_i << " " << type.first << " " << quantity << endl;
|
|
|
+ cout << drone << " D " << ord.id << " " << type.first << " " << quantity << endl;
|
|
|
|
|
|
// compute score
|
|
|
score += ceil(10.*(ins.T-drone_temps[drone])/ins.T);
|
|
@@ -57,7 +75,7 @@ int main() {
|
|
|
int seed = time(NULL);
|
|
|
srand(seed);
|
|
|
cerr << "seed : " << seed << endl;
|
|
|
- instance ins;
|
|
|
+ //instance ins;
|
|
|
glouton(ins);
|
|
|
return 0;
|
|
|
}
|