Submission #625587

#TimeUsernameProblemLanguageResultExecution timeMemory
625587d4xnRadio Towers (IOI22_towers)C++17
11 / 100
4072 ms2240 KiB
#include "towers.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define vi vector<int>
#define ii pair<int, int>
#define vii vector<ii>

int n;
vi v;

void init(int N, std::vector<int> H) {
  n = N;
  v.resize(n);
  for (int i = 0; i < n; i++) v[i] = H[i];
}

int max_towers(int L, int R, int D) {
  int l = L;
  int r = R;
  int d = D;

  vii s(r-l+1);
  for (int i = l; i <= r; i++) {
    s[i-l] = make_pair(v[i], i);
  }
  sort(s.begin(), s.end());

  vi ok(n, 0);
  int ans = 0;
  for (int i = 0; i < r-l+1; i++) {
    int h = s[i].first;
    int idx = s[i].second;
    if (ok[idx] == ans) {
      ans++;

      int mx;
      if (idx+1 < n) mx = v[idx+1];
      for (int j = idx+2; j <= r; j++) {
        if (max(h, v[j]) + d <= mx) ok[j]++;
        mx = max(mx, v[j]);
      }

      if (idx-1 >= 0) mx = v[idx-1];
      for (int j = idx-2; j >= l; j--) {
        if (max(h, v[j]) + d <= mx) ok[j]++;
        mx = max(mx, v[j]);
      }
    }
  }
  return ans;
}

Compilation message (stderr)

towers.cpp: In function 'int max_towers(int, int, int)':
towers.cpp:38:11: warning: 'mx' may be used uninitialized in this function [-Wmaybe-uninitialized]
   38 |       int mx;
      |           ^~
#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...