Pagini recente » Cod sursa (job #403302) | Cod sursa (job #527319) | Cod sursa (job #1770992) | Cod sursa (job #177383) | Cod sursa (job #990736)
Cod sursa(job #990736)
using namespace std;
#include<fstream>
#include<cstdio>
#include<algorithm>
#include<cmath>
//ifstream eu("arbint.in");
ofstream tu("arbint.out");
#define Nmax 100002
#define DIM 8192
char ax[DIM+16];
int pz;
int IT[4*Nmax];
int N,M,poz,val,QL,QR,QMax;
inline void cit(int &x)
{
x=0;
while(ax[pz]<'0' || ax[pz]>'9')
if(++pz==DIM)fread(ax, 1, DIM, stdin), pz=0;
while(ax[pz]>='0' && ax[pz]<='9')
{
x=x*10+ax[pz]-'0';
if(++pz==DIM)fread(ax,1, DIM, stdin),pz=0;
}
}
inline void Update(int nod,int L,int R)
{
int Mid=(L+R)/2;
if(L==R)
{
IT[nod]=val;
return;
}
if(poz<=Mid)
Update(2*nod,L,Mid);
else
Update(2*nod+1,Mid+1,R);
IT[nod]=max(IT[2*nod],IT[2*nod+1]);
}
inline void Query(int nod,int L,int R)
{
int Mid=(L+R)/2;
if(QL<=L&&R<=QR)
{
QMax=max(QMax,IT[nod]);
return;
}
if(QL<=Mid)
Query(2*nod,L,Mid);
if(QR>Mid)
Query(2*nod+1,Mid+1,R);
}
int main()
{
int op;
freopen("arbint.in","r",stdin);
//eu>>N>>M;
cit(N);cit(M);
for(poz=1;poz<=N;poz++)
{
//eu>>val;
cit(val);
Update(1,1,N);
}
while(M--)
{
//eu>>op;
cit(op);
if(op==0)
{
QMax=0;
// eu>>QL>>QR;
cit(QL);cit(QR);
// Query(1,1,N);
tu<<QMax<<"\n";
}
if(op==1)
{
//eu>>poz>>val;
cit(poz);cit(val);
//Update(1,1,N);
}
}
return 0;
}