# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
915202 |
2024-01-23T13:23:49 Z |
qin |
Triple Jump (JOI19_jumps) |
C++17 |
|
71 ms |
5328 KB |
#include <bits/stdc++.h>
#define fi first
#define se second
#define ssize(x) int(x.size())
#define pn printf("\n")
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define vv vector
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
int inf = 2e09; ll infll = 2e18; int mod = 119<<23|1;
struct seg{
vector<int> t;
int base = 1;
void init(int n, vector<int> &a){
while(base < n) base <<= 1;
t.resize(base<<1);
for(int i = 1; i <= n; ++i) t[i+base-1] = a[i];
for(int i = base-1; i; --i) t[i] = max(t[i<<1], t[i<<1|1]);
}
int query_max(int i, int s, int e, int x, int y){
if(x <= s && e <= y) return t[i];
int mid = (s+e)>>1, ret = 0;
if(x <= mid) ret = max(ret, query_max(i<<1, s, mid, x, y));
if(mid < y) ret = max(ret, query_max(i<<1|1, mid+1, e, x, y));
return ret;
}
int query(int x, int y){
if(x <= y) return query_max(1, 1, base, max(1, x), min(base, y));
return 0;
}
};
void answer(){
int n; scanf("%d", &n);
vector<int> t(n+1);
for(int i = 1; i <= n; ++i) scanf("%d", &t[i]);
seg seg; seg.init(n, t);
int q; scanf("%d", &q);
for(++q; --q; ){
int l, r; scanf("%d%d", &l, &r);
vector<int> st;
for(int i = r; i > l; --i)
if(st.empty() || t[st.back()] < t[i]) st.emplace_back(i);
int mx_pos = l, result = 0;
for(int i = l+1; i <= r-1; ++i){
if(st.back() == i) st.pop_back();
result = max(result, seg.query(max(l, i-(st.back()-i)), i-1)+t[i]+t[st.back()]);
result = max(result, t[mx_pos]+t[i]+seg.query(i+(i-mx_pos), r));
if(t[mx_pos] <= t[i]) mx_pos = i;
}
printf("%d\n", result);
}
}
int main(){
int T = 1;
for(++T; --T; ) answer();
return 0;
}
Compilation message
jumps.cpp: In function 'void answer()':
jumps.cpp:35:15: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
35 | int n; scanf("%d", &n);
| ~~~~~^~~~~~~~~~
jumps.cpp:37:36: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
37 | for(int i = 1; i <= n; ++i) scanf("%d", &t[i]);
| ~~~~~^~~~~~~~~~~~~
jumps.cpp:39:15: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
39 | int q; scanf("%d", &q);
| ~~~~~^~~~~~~~~~
jumps.cpp:41:20: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
41 | int l, r; scanf("%d%d", &l, &r);
| ~~~~~^~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
1 ms |
436 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
1 ms |
600 KB |
Output is correct |
6 |
Correct |
1 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
344 KB |
Output is correct |
10 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
11 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
1 ms |
436 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
1 ms |
600 KB |
Output is correct |
6 |
Correct |
1 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
344 KB |
Output is correct |
10 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
11 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
63 ms |
4284 KB |
Output is correct |
2 |
Correct |
70 ms |
4288 KB |
Output is correct |
3 |
Correct |
45 ms |
5328 KB |
Output is correct |
4 |
Correct |
69 ms |
4284 KB |
Output is correct |
5 |
Correct |
65 ms |
4180 KB |
Output is correct |
6 |
Correct |
64 ms |
4048 KB |
Output is correct |
7 |
Correct |
71 ms |
3932 KB |
Output is correct |
8 |
Correct |
63 ms |
4032 KB |
Output is correct |
9 |
Correct |
63 ms |
4184 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
1 ms |
436 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
1 ms |
600 KB |
Output is correct |
6 |
Correct |
1 ms |
348 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
344 KB |
Output is correct |
10 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
11 |
Halted |
0 ms |
0 KB |
- |