Pagini recente » Cod sursa (job #2203206) | Cod sursa (job #736733) | Cod sursa (job #2302506) | Statistici Gurita Adrian (Castiel) | Cod sursa (job #578090)
Cod sursa(job #578090)
#include <fstream.h>
ifstream fin("arbint.in");
ofstream fout("arbint.out");
const int r=100001;
int n,m,i,x,y,k,max;
int v[4*r];
int maxim(int a, int b)
{
return (a>b) ? a : b;
}
void update(int poz, int ls, int ld) {
int h;
if (ls==ld)
{
v[poz]=y;
return;
}
h=(ls+ld)/2;
if (x<=h) update(2*poz, ls, h);
else update(2*poz+1, h+1, ld);
v[poz]=maxim(v[2*poz], v[2*poz+1]);
}
void find(int poz, int ls, int ld) {
int h;
if (x<=ls && ld<=y)
{
max=maxim(max, v[poz]);
return;
}
h=(ls+ld)/2;
if (x<=h) find(2*poz, ls, h);
if (y>h) find(2*poz+1, h+1, ld);
}
int main() {
fin>>n>>m;
for (i=1;i<=n;i++)
{
fin>>y; x=i;
update(1,1,n);
}
for (i=1;i<=m;i++)
{
fin>>k>>x>>y;
if (k)
update(1,1,n);
else
{
max=0;
find(1,1,n);
fout<<max<<"\n";
}
}
return 0;
}