제출 #295602

#제출 시각아이디문제언어결과실행 시간메모리
295602RezwanArefin01Safety (NOI18_safety)C++17
100 / 100
99 ms5528 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> ii;

const int N = 2e5 + 5;
int n, h, X;

template <class T>
struct shift_pq {
  T Q;
  ll total;
  shift_pq() : total(0) {}

  void shift(ll X) {
    total += X;
  }
  void push(ll X) {
    Q.push(X - total);
  }
  ll top() {
    return Q.top() + total;
  }
  void pop() {
    Q.pop();
  }
};

int main() {
#ifdef LOCAL
  freopen("in", "r", stdin);
#endif
  scanf("%d %d", &n, &h);

  shift_pq<priority_queue<ll>> L;
  shift_pq<priority_queue<ll, vector<ll>, greater<ll>>> R;

  ll ans = 0;
  for (int i = 0; i < n; ++i) {
    scanf("%d", &X);

    L.shift(-h);
    R.shift(h);

    L.push(X);
    R.push(X);

    if (X < L.top()) {
      ans += L.top() - X;
      L.push(X);
      R.push(L.top());
      R.pop();
      L.pop();
    } else if (X > R.top()) {
      ans += X - R.top();
      R.push(X);
      L.push(R.top());
      L.pop();
      R.pop();
    }
  }

  printf("%lld\n", ans);
}

컴파일 시 표준 에러 (stderr) 메시지

safety.cpp: In function 'int main()':
safety.cpp:34:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   34 |   scanf("%d %d", &n, &h);
      |   ~~~~~^~~~~~~~~~~~~~~~~
safety.cpp:41:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   41 |     scanf("%d", &X);
      |     ~~~~~^~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...