5700 2023. 09. 09 17:39:23 TomaSajt Sípálya (55 pont) cpp17 Hibás válasz 7/55 29ms 12092 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

vector<ll> range_maxes(const vector<ll>& v, int k) {
  int n = v.size();
  vector<ll> res(n - k + 1);
  deque<int> dq;
  for (int i = 0; i < n; i++) {
    while (!dq.empty() && i - dq.front() >= k) dq.pop_front();
    while (!dq.empty() && v[dq.back()] <= v[i]) dq.pop_back();
    dq.push_back(i);
    if (i - k + 1 >= 0) {
      res[i - k + 1] = v[dq.front()];
    }
  }
  return res;
}

int main() {
  cin.tie(0), ios::sync_with_stdio(0);

  int n, k;
  cin >> n >> k;

  vector<ll> v(n);
  for (auto& a : v) cin >> a;
  for (int i = 0; i < n; i++) v[i] += i;  // add the index, so that we now need to make flat regions instead of stairs

  vector<ll> maxes = range_maxes(v, k);  // maxes[i]: max value in the i-th K length interval

  vector<int> ps(n + 1);
  partial_sum(v.begin(), v.end(), ps.begin() + 1);

  ll best = LLONG_MAX;
  for (int i = 0; i <= n - k; i++) {
    int sum = ps[i + k] - ps[i];  // sum of values in the i-th K length interval
    ll cost = k * maxes[i] - sum;
    best = min(best, cost);
  }
  cout << best;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 7/55
1 Elfogadva 0/0 3ms 1976 KiB
2 Hibás válasz 0/0 2ms 2192 KiB
3 Hibás válasz 0/2 3ms 2164 KiB
4 Hibás válasz 0/2 3ms 2292 KiB
5 Hibás válasz 0/2 3ms 2552 KiB
6 Hibás válasz 0/2 3ms 2888 KiB
7 Hibás válasz 0/3 3ms 3220 KiB
8 Elfogadva 1/1 4ms 3604 KiB
9 Elfogadva 1/1 4ms 3816 KiB
10 Elfogadva 1/1 4ms 3856 KiB
11 Elfogadva 1/1 4ms 4104 KiB
12 Elfogadva 1/1 4ms 4064 KiB
13 Hibás válasz 0/1 4ms 4040 KiB
14 Hibás válasz 0/2 4ms 3960 KiB
15 Elfogadva 2/2 4ms 4124 KiB
16 Hibás válasz 0/2 29ms 11332 KiB
17 Hibás válasz 0/2 28ms 10048 KiB
18 Hibás válasz 0/2 28ms 10016 KiB
19 Hibás válasz 0/3 28ms 9332 KiB
20 Hibás válasz 0/2 29ms 11444 KiB
21 Hibás válasz 0/2 29ms 11672 KiB
22 Hibás válasz 0/2 29ms 11668 KiB
23 Hibás válasz 0/2 28ms 11884 KiB
24 Hibás válasz 0/2 29ms 12092 KiB
25 Hibás válasz 0/2 28ms 11576 KiB
26 Hibás válasz 0/2 29ms 11604 KiB
27 Hibás válasz 0/2 28ms 11576 KiB
28 Hibás válasz 0/3 28ms 11596 KiB
29 Hibás válasz 0/3 28ms 11448 KiB
30 Hibás válasz 0/3 28ms 11448 KiB