Pagini recente » Cod sursa (job #3227519) | Cod sursa (job #3212380) | Cod sursa (job #2865041) | Cod sursa (job #786677) | Cod sursa (job #2055529)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Main {
static int n;
static int np = 2;
static int m;
static int v[];
static int arb[];
public static void update(int i) {
if(0 < i) {
arb[i] = Integer.max(arb[2*i], arb[2*i + 1]);
update(i / 2);
}
}
public static int query(int from, int to) {
int answer = 0;
if(from == to)
answer = arb[from];
else if(from < to) {
if(from % 2 == 1) {
answer = Integer.max(answer, arb[from]);
from++;
} if(to % 2 == 0) {
answer = Integer.max(answer, arb[to]);
to--;
}
return Integer.max(answer, query(from / 2, to / 2));
}
return answer;
}
public static void main(String[] args) throws FileNotFoundException, IOException {
Scanner in = new Scanner(new BufferedReader(new FileReader("arbint.in")));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("arbint.out")));
n = in.nextInt();
m = in.nextInt();
int pow = 0;
while ((1 << pow) < n) {
pow++;
}
np = (1 << pow);
v = new int[n + 1];
for (int i = 1; i <= n; i++) {
v[i] = in.nextInt();
//out.write(v[i] + " ");
}
arb = new int[2 * np + 2];
for (int i = 0; i < n; i++) {
arb[np + i] = v[i];
}
for (int i = np; i > 0; i--) {
arb[i] = Integer.max(arb[2 * i], arb[2 * i + 1]);
}
for (int i = 0; i < m; i++) {
int op = in.nextInt();
int x = in.nextInt();
int y = in.nextInt();
if(op == 0) {
out.println(query(np + x, np + y));
} else if(op == 1) {
arb[np + x] = y;
update((np + x) / 2);
}
}
out.close();
}
}