Pagini recente » Cod sursa (job #3343518) | Cod sursa (job #599144) | Cod sursa (job #2519587) | Monitorul de evaluare | Cod sursa (job #1734729)
import java.util.*;
import java.io.*;
/***
*
* @author Patrick
*
*/
public class Main {
public static int [ ] arb = new int [ 700999 ] ;
public static void main(String[] args) throws FileNotFoundException, IOException {
//Reader Goo = new Reader () ;
// Reader.init(new FileInputStream ( "arbint.in" ) );
InputReader cin=new InputReader (new FileInputStream ( "arbint.in") );
OutputWriter out=new OutputWriter(new FileOutputStream ( "arbint.out"));
int N = cin.readInt() ;
int M = cin.readInt() ;
for ( int i = 1 ; i <= N ; ++ i ) {
int X = cin.readInt() ;
update ( 1 , 1 , N , i , X ) ;
}
for ( int i = 1 ; i <= M ; ++ i ) {
int Tip = cin.readInt() ;
if ( Tip == 1 ) {
int X = cin.readInt() ;
int Y = cin.readInt() ;
update ( 1 , 1 , N , X , Y ) ;
}
else {
int X = cin.readInt() ;
int Y = cin.readInt() ;
out.print( query ( 1 , 1 , N , X , Y ) );
out.print( "\n" );
}
}
out.close ( ) ;
}
public static int query ( int nod , int st , int dr , int a , int b )
{
//System.out.println( "a intrat" );
//System.out.println( nod );
if ( a <= st && dr <= b ) {
//sol = Math.max( sol , arb [ nod ] ) ;
return arb [ nod ] ;
}
int mij = ( st + dr ) / 2 ;
int LEFT = 0 ;
int RIGHT = 0 ;
if ( a <= mij ) {
LEFT = query ( nod * 2 , st , mij , a , b ) ;
}
if ( b > mij ) {
RIGHT = query ( nod * 2 + 1 , mij + 1 , dr , a , b ) ;
}
return Math.max( LEFT , RIGHT ) ;
}
public static void update ( int nod , int st , int dr , int pos , int val )
{
if ( st == dr ) {
arb [ nod ] = val ;
return ;
}
int mij = ( st + dr ) / 2 ;
if ( pos <= mij ) {
update ( nod * 2 , st , mij , pos , val ) ;
}
else {
update ( nod * 2 + 1 , mij + 1 , dr , pos , val ) ;
}
arb [ nod ] = Math.max ( arb [ nod * 2 ] , arb [ nod * 2 + 1 ] ) ;
}
/** Class for buffered reading int and double values */
}
class InputReader {
private InputStream stream;
private byte[] buf = new byte[1024];
private int curChar;
private int numChars;
private SpaceCharFilter filter;
public InputReader(InputStream stream) {
this.stream = stream;
}
public int read() {
if (numChars == -1)
throw new InputMismatchException();
if (curChar >= numChars) {
curChar = 0;
try {
numChars = stream.read(buf);
} catch (IOException e) {
throw new InputMismatchException();
}
if (numChars <= 0)
return -1;
}
return buf[curChar++];
}
public int readInt() {
int c = read();
while (isSpaceChar(c))
c = read();
int sgn = 1;
if (c == '-') {
sgn = -1;
c = read();
}
int res = 0;
do {
if (c < '0' || c > '9')
throw new InputMismatchException();
res *= 10;
res += c - '0';
c = read();
} while (!isSpaceChar(c));
return res * sgn;
}
public String readString() {
int c = read();
while (isSpaceChar(c))
c = read();
StringBuilder res = new StringBuilder();
do {
res.appendCodePoint(c);
c = read();
} while (!isSpaceChar(c));
return res.toString();
}
public boolean isSpaceChar(int c) {
if (filter != null)
return filter.isSpaceChar(c);
return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
}
public String next() {
return readString();
}
public interface SpaceCharFilter {
public boolean isSpaceChar(int ch);
}
}
class OutputWriter {
private final PrintWriter writer;
public OutputWriter(OutputStream outputStream) {
writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
}
public OutputWriter(Writer writer) {
this.writer = new PrintWriter(writer);
}
public void print(Object...objects) {
for (int i = 0; i < objects.length; i++) {
if (i != 0)
writer.print(' ');
writer.print(objects[i]);
}
}
public void printLine(Object...objects) {
print(objects);
writer.println();
}
public void close() {
writer.close();
}
public void flush() {
writer.flush();
}
}