import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int Q = Integer.parseInt(st.nextToken());
        int leaf_count = 1;
        
        while(n > leaf_count) {
            leaf_count <<= 1; 
        }
        
        int arr_len = 2*leaf_count - 1;

        int[] arr = new int[arr_len];

        st = new StringTokenizer(br.readLine());
        
        for (int i=arr_len/2; i<arr_len; i++) {
            if (st.hasMoreTokens()) {
                arr[i] = Integer.parseInt(st.nextToken());
            } else {
                arr[i] = 0; 
            }
        }
        
        if (arr_len>=2) {
            for (int i=arr_len/2-1; i>=0; i--) {
                arr[i] = Math.max(arr[i*2+1], arr[i*2+2]);
            }
        }

        for (int q = 0; q<Q; q++) {
            st = new StringTokenizer(br.readLine());
            int p = Integer.parseInt(st.nextToken());
            int x = Integer.parseInt(st.nextToken());
            int idx = arr_len/2+p; // 음, +1안해도 되나? 계산상 해야할 것 같았는데
            arr[idx] = x;
            while (idx!= 0) {
                idx = (idx-1)/2;
                arr[idx] = Math.max(arr[idx*2+1], arr[idx*2+2]);
        }
            StringBuilder sb = new StringBuilder();
        
            for (int i=0; i<arr_len; i++) {
                sb.append(arr[i]);
                sb.append(i==arr_len-1? "" : " ");
            }
    
        
            System.out.println(sb);
            }


        
                
        
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: