Pagini recente » Cod sursa (job #1711676) | Cod sursa (job #291571) | Cod sursa (job #2838112) | Cod sursa (job #1693152) | Cod sursa (job #1355463)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int v[262144], i, n, m, x, poz, k, s, d, maxi;
void Update(int nod, int st, int dr)
{ if (st==dr) v[nod]=x;
else
{ int m=(st+dr)/2;
if (poz<=m) Update(2*nod, st, m);
else Update(2*nod+1, m+1, dr);
v[nod]=max(v[2*nod], v[2*nod+1]);
}
}
void Querry(int nod, int st, int dr)
{ if (s<=st && dr<=d) maxi=max(maxi, v[nod]);
else
{ int m=(st+dr)/2;
if (s<=m) Querry(2*nod, st, m);
if (d>m) Querry(2*nod+1, m+1, dr);
}
}
int main()
{ f>>n>>m;
for (i=1; i<=n; ++i)
{ f>>x;
poz=i;
Update(1, 1, n);
}
for (i=1; i<=m; ++i)
{ f>>k;
if (k==1)
{ f>>poz>>x;
Update(1, 1, n);
}
else
{ f>>s>>d;
maxi=0;
Querry(1, 1, n);
g<<maxi<<'\n';
}
}
return 0;
}