Submission #1192596

#TimeUsernameProblemLanguageResultExecution timeMemory
1192596lopkusRabbit Carrot (LMIO19_triusis)C++20
0 / 100
1096 ms328 KiB
#include <bits/stdc++.h>

void solve() {
  int n, d;
  std::cin >> n >> d;
  std::vector<int> a(n);
  for(int i = 0; i < n; i++) {
    std::cin >> a[i];
  }
  int ans = n;
  for(int mask = 0; mask < (1LL << n); mask++) {
    int can = 1;
    std::vector<int> b = a;
    for(int i = 0; i < n; i++) {
      if(mask & (1LL << i)) {
        if(i == 0) {
          b[i] += 1e6;
        }
        else {
          if(b[i - 1] >= b[i]) {
            b[i] = b[i - 1];
          }
          else {
            b[i] = b[i - 1] + d;
          }
        }
      }
    }
    int c = 0;
    for(int i = 0; i < n; i++) {
      can &= (b[i] - c <= d);
      c = b[i];
    }
    if(can) {
      ans = std::min(ans, __builtin_popcount(mask));
    }
  }
  std::cout << ans;
}

int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);

  int t = 1;
  //std::cin >> t;
  while (t--) {
      solve();
  }

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