Pagini recente » Cod sursa (job #216961) | Cod sursa (job #489276) | Cod sursa (job #949325) | Cod sursa (job #842903) | Cod sursa (job #2946140)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
const int NMAX = 100000;
int v[NMAX+1],batog[320];
int main()
{
ifstream in("arbint.in");
ofstream out("arbint.out");
int n, m, a, b, i, cer, j;
in >> n >> m;
int x = sqrt(n);
for( i = 0; i < n ; i++ ){
in >> v[i];
batog[i / x] = max( batog[i / x] , v[i]);
}
for( i = 0 ; i < m ; i++ ){
in >> cer >> a >> b;
a--;
if( cer == 0 ){
b--;
int st = a / x , dr = b / x , maxi = 0;
if( st == dr ){
for( j = a ; j <= b ; j++)
maxi = max(maxi, v[j]);
}
else{
int fin = min(x * ( st + 1 ) , n);
for( j = a ; j < fin ; j++ )
maxi = max(maxi , v[j]);
for( j = st + 1 ; j < dr ; j++ )
maxi = max(maxi, batog[j]);
for( j = b ; j >= x * dr; j--)
maxi = max(maxi, v[j]);
}
out << maxi << endl;
}
else{
int st = a / x , maxi = 0;
int fin = min(x * ( st + 1 ) , n);
v[a] = b;
for( j = x * st ; j < fin; j++ )
batog[st] = max( maxi , v[j]);
}
}
return 0;
}