提出 #42134658


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

// Template {{{
#define REP(n) for (int _ = 0; _ < (n); _++)
#define FOR(i, a, b) for (int i = a; i < (b); i++)
#define F0R(i, a) for (int i = 0; i < (a); i++)
#define FORd(i, a, b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i, a) for (int i = (a)-1; i >= 0; i--)

#define sz(x) (int)(x).size()
#define all(x) x.begin(), x.end()

template <class T>
bool ckmin(T &a, const T &b) {
  return b < a ? a = b, 1 : 0;
}
template <class T>
bool ckmax(T &a, const T &b) {
  return a < b ? a = b, 1 : 0;
}

namespace std {
template <class Fun>
class y_combinator_result {
  Fun fun_;

  public:
  template <class T>
  explicit y_combinator_result(T &&fun) : fun_(std::forward<T>(fun)) {}

  template <class... Args>
  decltype(auto) operator()(Args &&...args) {
    return fun_(std::ref(*this), std::forward<Args>(args)...);
  }
};

template <class Fun>
decltype(auto) y_combinator(Fun &&fun) {
  return y_combinator_result<std::decay_t<Fun>>(std::forward<Fun>(fun));
}
}  // namespace std

#define DEBUG(x) cerr << #x << ": " << x << '\n'
template <typename A, typename B>
ostream &operator<<(ostream &os, const pair<A, B> &p) {
  return os << '(' << p.first << ", " << p.second << ')';
}
template <typename T_container, typename T = typename enable_if<
                                    !is_same<T_container, string>::value,
                                    typename T_container::value_type>::type>
ostream &operator<<(ostream &os, const T_container &v) {
  os << '[';
  string sep;
  for (const T &x : v) os << sep << x, sep = ", ";
  return os << ']';
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
// }}}

int main() {
  ios_base::sync_with_stdio(false); cin.tie(NULL);
  int N; cin >> N;
  vector<int> A(N);
  F0R(i, N) cin >> A[i];
  vector<pair<int, int>> v;
  vector<int> pfx;
  for (int i = 1; i < N; i += 2) {
    v.push_back({A[i+1], A[i]});
    pfx.push_back((pfx.empty() ? 0 : pfx.back()) + (A[i+1]-A[i]));
  }

  auto query = [&](int x) -> int {
    auto it = lower_bound(all(v), make_pair(x, 0));
    int i = distance(v.begin(), it);
    return pfx[i] - (v[i].first - max(x, v[i].second));
  };

  int q; cin >> q;
  while (q--) {
    int l, r; cin >> l >> r;
    cout << query(r) - query(l) << '\n';
  }
}

提出情報

提出日時
問題 D - Sleep Log
ユーザ silxikys
言語 C++ (GCC 9.2.1)
得点 450
コード長 2399 Byte
結果 AC
実行時間 120 ms
メモリ 5688 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 450 / 450
結果
AC × 2
AC × 20
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 02_max_09.txt, 02_max_10.txt, 02_max_11.txt, 02_max_12.txt, 02_max_13.txt, 02_max_14.txt, 02_max_15.txt, 03_edge_16.txt, 03_edge_17.txt, 03_edge_18.txt, 03_edge_19.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 10 ms 3580 KiB
00_sample_01.txt AC 2 ms 3424 KiB
01_random_02.txt AC 20 ms 5108 KiB
01_random_03.txt AC 45 ms 4188 KiB
01_random_04.txt AC 92 ms 5156 KiB
01_random_05.txt AC 31 ms 4124 KiB
01_random_06.txt AC 64 ms 5188 KiB
01_random_07.txt AC 95 ms 4120 KiB
01_random_08.txt AC 76 ms 5172 KiB
02_max_09.txt AC 119 ms 5508 KiB
02_max_10.txt AC 117 ms 5668 KiB
02_max_11.txt AC 119 ms 5604 KiB
02_max_12.txt AC 118 ms 5684 KiB
02_max_13.txt AC 118 ms 5688 KiB
02_max_14.txt AC 120 ms 5672 KiB
02_max_15.txt AC 119 ms 5568 KiB
03_edge_16.txt AC 56 ms 3592 KiB
03_edge_17.txt AC 56 ms 3476 KiB
03_edge_18.txt AC 77 ms 5668 KiB
03_edge_19.txt AC 77 ms 5672 KiB