Pagini recente » Cod sursa (job #1928871) | Cod sursa (job #2400072) | Cod sursa (job #3229929) | Cod sursa (job #1081058) | Cod sursa (job #855184)
Cod sursa(job #855184)
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int poz,mij,maxim,val,finish,start;
int Arb[400500];
void update(int left,int right,int nod)
{
if(left==right)
{
Arb[nod]=val;
return;
}
mij=(left+right)/2;
if(poz<=mij) update(left,mij,nod*2);
else update(mij+1,right,nod*2+1);
Arb[nod]=max(Arb[nod*2],Arb[nod*2+1]);
}
void query(int left,int right,int nod)
{
if(start <= left && right <= finish)
{
if(maxim<Arb[nod]) maxim=Arb[nod];
return;
}
mij=(left+right)/2;
if(start<=mij) query(left,mij,nod*2);
if(mij<finish) query(mij+1,right,nod*2+1);
}
int main()
{
int i,j,n,m,z,x,c;
ifstream f("arbint.in");
ofstream g("arbint.out");
f>>n>>m;
for(i=0;i<n;++i)
{
f>>val;
poz=i+1;
update(1,n,1);
}
for(i=0;i<m;++i)
{
f>>z>>x>>c;
if(z==0)
{
maxim=-1;
start=x;
finish=c;
query(1,n,1);
g<<maxim<<'\n';
}
else
{
poz=x;
val=c;
update(1,n,1);
}
}
return 0;
}