Submission #282469

#TimeUsernameProblemLanguageResultExecution timeMemory
282469aloo123Triple Jump (JOI19_jumps)C++14
19 / 100
3446 ms127572 KiB
#include <algorithm> #include <bitset> #include <cassert> #include <chrono> #include <complex> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <deque> #include <functional> #include <iomanip> #include <iostream> #include <iterator> #include <limits> #include <list> #include <map> #include <numeric> #include <queue> #include <random> #include <ratio> #include <set> #include <sstream> #include <stack> #include <string> #include <unordered_map> #include <unordered_set> #include <utility> #include <vector> #include <climits> #define ll long long #define ld long double #define mp make_pair #define pb push_back #define in insert #define vll vector<ll> #define endl "\n" #define pll pair<ll,ll> #define f first #define s second #define FOR(i,a,b) for(int i=(a),_b=(b); i<=_b; i++) #define int ll #define sz(x) (ll)x.size() #define all(x) (x.begin(),x.end()) using namespace std; const ll INF = 1e12; const ll N =(5000+5); // TODO : change value as per problem const ll MOD = 1e9+7; int a[N]; int ans[N][N]; int t[4*N]; void build(int node,int l,int r){ if(l == r){ t[node] = a[l]; } else{ int m = (l+r)>>1ll; build(node*2,l,m); build(node*2+1,m+1,r); t[node] = max(t[node*2],t[node*2+1]); } } int query(int node,int l,int r,int st,int en){ if(l > en || r < st) return 0; if(l >= st && r <= en) return t[node]; int m = (l+r)>>1ll; int p1 = query(node*2,l,m,st,en); int p2 = query(node*2+1,m+1,r,st,en); return max(p1,p2); } void solve(){ int n; cin >> n; for(int i =1;i<=n;i++){ cin>>a[i]; } build(1,1,n); for(int sz = 3;sz<=n;sz++){ for(int l = 1;(l+sz-1)<=n;l++){ int r = (l+sz-1); // b <= (a + c)/2 int k = (l+r)>>1ll; ans[l][r] = max(max(ans[l+1][r],ans[l][r-1]), a[l] + a[r] + query(1,1,n,l+1,k)); } } int q; cin >> q; while(q--){ int i,j; cin >> i >> j; cout << ans[i][j] << endl; } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(NULL); // freopen(".in","r",stdin);freopen(".out","w",stdout); ll tt=1; // cin >> tt; while(tt--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...