Pagini recente » Cod sursa (job #2822040) | Cod sursa (job #1887945) | Cod sursa (job #2920132) | Cod sursa (job #1724632) | Cod sursa (job #2753232)
#include <stdio.h>
#include <fstream>
#include<iostream>
using namespace std;
#define dim 100001
int N, M;
int Arb[4*dim];
int start, finish, a, b, maxim;
ifstream f("arbint.in");
ofstream g ("arbint.out");
void intermaxim(int i, int L, int R)
{
if ( start <= L && finish >= R )
{
if ( maxim < Arb[i] ) maxim = Arb[i];
g<<maxim<<endl;
}
int aux = (L+R)/2;
if ( start <= aux ) intermaxim(2*i,L,aux);
if ( aux < finish ) intermaxim(2*i+1,aux+1,R);
}
int Maxim(int x, int y) {
if ( x > y ) return x;
return y;
}
void schimbare(int i, int L, int R)
{
if ( L == R)
Arb[i] = b;
int aux = (L+R)/2;
if ( a <= aux ) schimbare(2*i,L,aux);
else schimbare(2*i+1,aux+1,R);
Arb[i] = Maxim( Arb[2*i], Arb[2*i+1] );
}
int main()
{
int X, A, B,j;
f>>N>>M;
for ( j = 1; j <= N; j++ )
f>>Arb[j];
for ( j = 1; j <= M; j++ )
{ f>>X;
if ( X == 0 )
{ f>>A>>B;
maxim = -1;
start = A, finish = B;
intermaxim(1,1,N);
}
else
{
a = A, b = B;
schimbare(1,1,N);
}
}
}