提出 #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 |
| 結果 |
|
|
| セット名 |
テストケース |
| 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 |