Pagini recente » Cod sursa (job #2836693) | Cod sursa (job #2635540) | Cod sursa (job #2361845) | Cod sursa (job #1346968) | Cod sursa (job #2001917)
import java.io.*;
class Main {
static int n;
static int[] arb = new int[400020];
static int[] values;
static int maxim;
static final long mod = 1999999973;
public static int[] parseLine(String line)
{
String[] elements = line.split(" ");
int[] result = new int[elements.length];
for(int i = 0; i < elements.length; ++i)
{
result[i] = Integer.parseInt(elements[i]);
}
return result;
}
private static void Update(int node, int st, int dr, int value, int position)
{
int m;
if(st == dr)
{
arb[node] = value;
return;
}
m = (st + dr) >> 1;
if(position <= m) Update(2 * node, st, m, value, position);
else Update(2 * node + 1, m + 1, dr, value, position);
arb[node] = Math.max(arb[2 * node], arb[2 * node + 1]);
}
public static void Query(int node, int st, int dr, int left, int right)
{
int m;
if(left <= st && dr <= right)
{
maxim = Math.max(maxim, arb[node]);
return;
}
m = (st + dr) >> 1;
if(m >= left) Query(2 * node, st, m, left, right);
if(m < right) Query(2 * node + 1, m + 1, dr, left, right);
}
public static void main(String[] args) throws IOException
{
BufferedReader reader = new BufferedReader(new FileReader("arbint.in"));
BufferedWriter writer = new BufferedWriter(new FileWriter("arbint.out"));
String line = reader.readLine();
int[] numbers = parseLine(line);
int x, q, y, m;
n = numbers[0];
m = numbers[1];
line = reader.readLine();
values = parseLine(line);
for(int i = 1; i <= n; ++i)
{
x = values[i - 1];
Update(1, 1, n, x, i);
}
for(int i = 1; i <= m; ++i)
{
line = reader.readLine();
numbers = parseLine(line);
q = numbers[0];
x = numbers[1];
y = numbers[2];
if(q == 0)
{
maxim = -1;
Query(1, 1, n, x, y);
writer.write(maxim + "\n");
}
else Update(1, 1, n, y, x);
}
reader.close();
writer.close();
}
}