Pagini recente » Cod sursa (job #1916854) | Cod sursa (job #1456728) | Cod sursa (job #692532) | Cod sursa (job #1022006) | Cod sursa (job #2946134)
#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 y = a / x , maxi = 0;
v[a] = b;
for( j = x * y ; j < x * ( y + 1 ); j++ )
batog[y] = max( maxi , v[j]);
}
}
return 0;
}