Submission #1228714

#TimeUsernameProblemLanguageResultExecution timeMemory
1228714JovicaTriple Jump (JOI19_jumps)C++20
0 / 100
87 ms5444 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; ll drvo[1000001]; ll najdi(int l,int r,int poz,int const levo,const int desno) { if (desno<l || r<levo) return 0; if (levo<=l && r<=desno) return drvo[poz]; int mid = (l+r)/2; return max(najdi(l,mid,poz*2,levo,desno),najdi(mid+1,r,poz*2+1,levo,desno)); } int main() { int n,ns=1; cin>>n;///staj ll vector<ll> v(n); while (ns<n) ns*=2; for (int i=0;i<n;i++) { cin>>v[i]; drvo[ns+i] = v[i]; } for (int i=ns-1;i>0;i--) drvo[i] = max(drvo[i*2],drvo[i*2+1]); int q,levo,desno;cin>>q>>levo>>desno; stack<int> s; ll odg= 0; for (int i=0;i<n;i++) { while (s.size()) { ll ans = v[s.top()] + v[i] + najdi(1,ns,1,i+(i-s.top()),ns); odg = max(odg,ans); if (v[s.top()] <= v[i]) s.pop(); else break; } s.push(i); } cout<<odg<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...