제출 #1177281

#제출 시각아이디문제언어결과실행 시간메모리
1177281madamadam3나일강 (IOI24_nile)C++20
17 / 100
2094 ms5052 KiB
#include "nile.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
using vi = vector<int>;

// input
// W[i] = weight of artifact i
// A[i] = cost of transporting artifact i by itself
// B[i] = cost of transporting artifact i with another artifact
// E[j] = maximum weight different for artifacts going together for query j

// output
// R[i] = min cost of transporting all artifacts, when D = R[j]

vector<ll> calculate_costs(vi W, vi A, vi B, vi E) {
  int N = W.size(), Q = E.size();
  vector<ll> R(Q, 0);

  vector<int> indices(N); iota(indices.begin(), indices.end(), 0);
  sort(indices.begin(), indices.end(), [&](const auto &a, const auto &b) {
    return W[a] <= W[b];
  });
  // reverse(indices.begin(), indices.end());

  for (int j = 0; j < Q; j++) {
    vector<int> cur = indices;
    ll cost = 0;
    ll pairs = 0;
    ll single = 0;

    for (int i = 0; i < N; i++) {
      if (i < N - 1 && abs(W[cur[i + 1]] - W[cur[i]]) <= E[j]) {
        pairs++;
        i++;
      } else {
        single++;
      }
    }

    R[j] = 2 * pairs + 2 * single;
  }

  return R;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...