Cod sursa(job #2690495)

Utilizator popashtefan10Popa Stefan popashtefan10 Data 24 decembrie 2020 11:30:46
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.46 kb
#include <iostream>
#include <cstdio>
#define mx(x) T[x]=max(T[x*2],T[x*2+1])
using namespace std;int n,m,i,a,b,T[200005];int main(){freopen("arbint.in","r",stdin);freopen("arbint.out","w",stdout);scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%d",T+n+i);for(i=n-1;i;i--)mx(i);while(m--){scanf("%d%d%d",&i,&a,&b);if(i){T[a+=n-1]=b;a/=2;while(a)mx(a),a/=2;}else{for(a+=n-1,b+=n-1;a<=b;a/=2,b/=2){if(a&1)i=max(i,T[a++]);if(!(b&1))i=max(i,T[b--]);}printf("%d\n",i);}}return 0;}