Cod sursa(job #3181209)
| Utilizator | Data | 6 decembrie 2023 17:32:40 | |
|---|---|---|---|
| Problema | Arbori de intervale | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.38 kb |
#include <fstream>
using namespace std;int y[1000000],i,n,m,a,b,x;bool q;int main(){ifstream f("arbint.in");ofstream g("arbint.out");f>>n>>m;for(i=0;i<n;)f>>y[i+++n];for(i=n;--i;)y[i]=max(y[i*2],y[i*2+1]);for(;m--;){f>>q;if(q){f>>a;a+=n-1;f>>y[a];for(a/=2;a;a/=2)y[a]=max(y[a*2],y[a*2+1]);}else{f>>a>>b;a+=n-1;b+=n-1;x=0;for(;a<=b;x=max(x,max(y[a++],y[b--])),b=(b-1)/2,a=(a+1)/2;g<<x<<'\n';}}}