Cod sursa(job #1964260)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 13 aprilie 2017 12:03:14
Problema Arbori de intervale Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#import<fstream>
std::ifstream f("arbint.in");std::ofstream g("arbint.out");int A[800005],x,y,t,i=1,L,R,V,M,n,m;
void P(int K,int l,int r){if(l==r){A[K]=V;return;}
int h=(l+r)/2;if(L>h)P(2*K+1,h+1,r);else P(2*K,l,h);A[K]=std::max(A[2*K],A[2*K+1]);}
void Q(int K,int l,int r){if(L<=l&&r<=R){M=std::max(M,A[K]);return;}
int h=(l+r)/2;if(L<=h)Q(2*K,l,h);if(R>h)Q(2*K+1,h+1,r);}
main(){f>>n>>m;
for(;i<=n;i++){f>>x;L=i,V=x;P(1,1,n);}
while(m--){f>>t>>x>>y;
if(t==1){L=x,V=y;P(1,1,n);}else{L=x,R=y,M=0;Q(1,1,n);g<<M<<'\n';}}}