제출 #1178644

#제출 시각아이디문제언어결과실행 시간메모리
1178644amine_arouaFire (JOI20_ho_t5)C++20
7 / 100
348 ms64004 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int LG = 19 , MAXN = 4e5; int dp[LG + 1][MAXN + 1]; vector<int> lg(MAXN + 1); void precompute(vector<int> &v) { for(int i = 0 ;i < (int)v.size() ; i++) { dp[0][i] = v[i]; } for(int i = 1 ; i < LG ; i++) { for(int j = 0 ; j + (1<<i) <= MAXN ; j++) { dp[i][j] = max(dp[i - 1][j] , dp[i - 1][j + (1<<(i - 1))]); } } } int max_query(int l , int r) { int f = lg[r - l + 1]; return max(dp[f][l] , dp[f][r - (1<<f) + 1]); } signed main() { int n , q; cin>>n>>q; vector<int> s(2 * n + 1); for(int i = n ;i < 2 * n ; i++) { cin>>s[i]; } lg[1] = 0; for(int i = 2 ; i <= MAXN ; i++) { lg[i] = lg[i >> 1] + 1; } precompute(s); for(int i = 0 ; i < q ; i++) { int t , l , r; cin>>t>>l>>r; l+=n-1; cout<<max_query(l - t , l)<<'\n'; } }
#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...