Submission #1193699

#TimeUsernameProblemLanguageResultExecution timeMemory
1193699avighnaSnail (NOI18_snail)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h>

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

  int64_t h;
  int n;
  std::cin >> h >> n;
  std::vector<int64_t> p(n);
  for (auto &i : p) {
    std::cin >> i;
  }

  int64_t cur = 0;
  std::vector<bool> seen(n);
  int64_t orig = 0;
  for (int64_t day = 0;; day++) {
    bool seen_anything = false;
    for (int i = 0; i < n; ++i) {
      if (cur == 0 and seen[i]) {
        std::cout << "-1 -1\n";
        return 0;
      }
      if (cur == 0) {
        seen[i] = seen_anything = true;
      }
      if ((cur = std::max(int64_t(0), cur + p[i])) >= h) {
        std::cout << day << ' ' << i << '\n';
        return 0;
      }
    }
    orig++;
    if (!seen_anything) {
      break;
    }
  }

  int64_t sum = cur;
  std::pair<int64_t, int> max_sum = {-1, -1};
  for (int i = 0; i < n; ++i) {
    sum += p[i];
    max_sum = std::max(max_sum, {sum, i});
  }
  int64_t day = (h - (max_sum.first - cur) + sum - 1) / sum;
  int64_t cur_pos = sum * day;
  for (int i = 0; i < n; ++i) {
    cur_pos += p[i];
    if (cur_pos >= h) {
      std::cout << day + orig - 1 << ' ' << i << '\n';
      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...
#Verdict Execution timeMemoryGrader output
Fetching results...