Pagini recente » Cod sursa (job #2680640) | Cod sursa (job #181907) | Cod sursa (job #279926) | Cod sursa (job #2388083) | Cod sursa (job #2625865)
#include <fstream>
using namespace std;
int V[100000], A[1000000];
void cons(int p, int l, int r)
{
if(l==r)
{
A[p]=V[l];
}
else
{
cons(2*p, l, (l+r)/2);
cons(2*p+1, (l+r)/2+1, r);
if(A[2*p]>A[2*p+1])
{
A[p]=A[2*p];
}
else
{
A[p]=A[2*p+1];
}
}
}
int rez(int p, int l, int r, int a, int b)
{
if(a>r || b<l) return -1;
if(l>=a && r<=b) return A[p];
int k=rez(2*p, l, (l+r)/2,a,b), j=rez(2*p+1, (l+r)/2+1,r,a,b);
if(k==-1)
{
return j;
}
if(j==-1)
{
return k;
}
if(V[j]>V[k])
{
return j;
}
return k;
}
int main()
{
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int n,m,op,t1, t2;
fin>>n>>m;
for(int i=0; i<n; i++)
{
fin>>V[i];
}
cons(1,0,n-1);
for(int i=0; i<m; i++)
{
fin>>op>>t1>>t2;
if(op==0)
{
t1--;
t2--;
fout<<rez(1,0,n-1,t1,t2)<<'\n';
}
else
{
t1--;
V[t1]=t2;
cons(1,0,n-1);
}
}
return 0;
}