Pagini recente » Cod sursa (job #1094657) | Cod sursa (job #1301597)
#include <fstream>
#include<graphics.h>
using namespace std;
#define MX 100002
ifstream f1("arbint.in");
ofstream f2("arbint.out");
int n,m,o,a,b,i,c[MX],maxarb[MX*3];
void update(int nod,int st, int dr)
{ if (st>=dr ) {maxarb[nod]=b; return; };
int m= (st+dr)/2;
if (a<=m ) update(nod*2,st,m);
else update(nod*2+1,m+1,dr);
maxarb[nod]=max(maxarb[2*nod],maxarb[2*nod+1] );
}
int query(int nod,int st, int dr)
{ if (a<=st && b>=dr ) return(maxarb[nod]);
int m=(st+dr)/2, mx=0;
if (a<=m ) mx=max(mx, query(nod*2,st,m) );
if (b>m) mx=max(mx,query(nod*2+1,m+1,dr) );
return mx;
}
int main()
{
f1>>n>>m;
for (a=1;a<=n;a++)
{f1>>b;
update(1,1,n); }
for (i=1; i<=m;i++)
{ f1>>o>>a>>b;
if (!o) f2<<query(1,1,n)<<"\n";
else update(1,1,n);
}
f1.close();
f2.close();
return 0;
}