Submission #1228717

#TimeUsernameProblemLanguageResultExecution timeMemory
1228717JovicaTriple Jump (JOI19_jumps)C++20
27 / 100
86 ms6216 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) { //cout<<"ulava levo = "<<levo<<" desno = "<<desno<<endl; if (desno<l || r<levo || desno<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())+1,ns); //cout<<v[s.top()]<<" + "<<v[i]<<" + nekoe "<<ans-v[i]-v[s.top()]<<" = "<<ans<<endl; odg = max(odg,ans); if (v[s.top()] <= v[i]) s.pop(); else break; } s.push(i); } cout<<odg<<endl; return 0; } /* 8 1 2 3 4 5 6 7 8 1 1 8 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...