Pagini recente » Cod sursa (job #269305) | Cod sursa (job #547230) | Cod sursa (job #3205266) | Cod sursa (job #2745622) | Cod sursa (job #1529120)
#include <fstream>
#include <algorithm>
#define w 100001
using namespace std;
int a,b,vall;
int val[4*w];
void put(int i,int x,int y)
{
if (!(a<x||y<a))
{
if (x==y&&x==a)
{
val[i]=b;
}
else
{
int mid=(x+y)/2;
put(2*i,x,mid);
put(2*i+1,mid+1,y);
val[i]=max(val[2*i],val[2*i+1]);
}
}
}
int maxn(int i,int x,int y)
{
if (b<x||y<a) return -1;
if (a<=x&&y<=b) return val[i];
int mid=(x+y)/2;
return max(maxn(2*i,x,mid),maxn(2*i+1,mid+1,y));
}
int main()
{
ifstream f("arbint.in");
ofstream g("arbint.out");
int i,n,m,ok;
f>>n>>m;
for (i=1;i<=n;i++)
{
a=i;
f>>b;
put(1,1,n);
}
for (i=1;i<=m;i++)
{
f>>ok>>a>>b;
if (ok) put(1,1,n);
else g<<maxn(1,1,n)<<'\n';
}
f.close();
g.close();
return 0;
}