Submission #167213

#TimeUsernameProblemLanguageResultExecution timeMemory
167213theStaticMindTriple Jump (JOI19_jumps)C++14
5 / 100
4102 ms524292 KiB
#include<bits/stdc++.h> #define mp make_pair #define pb push_back #define ii pair<int,int> #define all(x) (x).begin(),(x).end() #define INF 100000000000000000 #define modulo 1000000007 #define mod 998244353 //#define int long long int using namespace std; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); // freopen("q.gir","r",stdin); // freopen("q.cik","w",stdout); int n; cin>>n; vector<int>arr(n); for(int i=0;i<n;i++)cin>>arr[i]; int q; cin>>q; vector<vector<int>>table(25,vector<int>(n,0)); vector<vector<int64_t>>rmq(n,vector<int64_t>(n,0)); vector<int>log(1<<20,0); for(int i=0;i<20;i++)log[1<<i]=i; table[0]=arr; for(int d=1;d<20;d++){ for(int i=0;i<n;i++){ table[d][i]=table[d-1][i]; if(i+(1<<(d-1))<n)table[d][i]=max(table[d][i],table[d-1][i+(1<<(d-1))]); } } for(int i=0;i<n;i++){ for(int j=i+2;j<n;j++){ int diff=(j-i)/2; int l=i+1,r=i+diff+1; while(l<r){ diff=r-l; int w=diff&-diff; rmq[i][j]=max(rmq[i][j],(int64_t)arr[i]+arr[j]+table[log[w]][l]); l+=w; } } } vector<vector<int64_t> >pre(n,vector<int64_t>(n,0)); for(int i=0;i<n;i++){ for(int j=1;j<n;j++){ pre[i][j]=max(pre[i][j-1],rmq[i][j]); } } while(q--){ int l,r; cin>>l>>r;l--,r--; int64_t a=0; for(int i=l;i<=r;i++){ a=max(a,pre[i][r]); } cout<<a<<"\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...