老師想知道從某某同學當中,分數最高的是多少,現在請你編程模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.
輸入描述:
輸入包括多組測試數據。 每組輸入第一行是兩個正整數N和M(0 < N <= 30000,0 < M < 5000),分別代表學生的數目和操作的數目。 學生ID編號從1編到N。 第二行包含N個整數,代表這N個學生的初始成績,其中第i個數代表ID為i的學生的成績 接下來又M行,每一行有一個字符C(只取‘Q’或‘U’),和兩個正整數A,B,當C為'Q'的時候, 表示這是一條詢問操作,他詢問ID從A到B(包括A,B)的學生當中,成績最高的是多少 當C為‘U’的時候,表示這是一條更新操作,要求把ID為A的學生的成績更改為B。
輸出描述:
對於每一次詢問操作,在一行里面輸出最高成績.
輸入例子:
5 7 1 2 3 4 5 Q 1 5 U 3 6 Q 3 4 Q 4 5 U 4 5 U 2 9 Q 1 5
輸出例子:
5 6 5 9
package com.huawei.practice001; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * @author Allen * @version 創建時間: * 類說明:https://www.nowcoder.com/test/question/ * 3897c2bcc87943ed98d8e0b9e18c4666?pid=260145&tid=10861849 */ public class zuigaofen { public static void main(String[] args) { Scanner sc1=new Scanner(System.in); do{ int[] num=new int[2]; num[0]=sc1.nextInt(); num[1]=sc1.nextInt(); List<Integer> list=new ArrayList<Integer>(); List<Integer> results=new ArrayList<Integer>(); for(int i=0; i<num[0]; i++){ list.add(sc1.nextInt()); } char a; int b,c; for(int j=0; j<num[1]; j++){ a=sc1.next().charAt(0); b=sc1.nextInt(); c=sc1.nextInt(); if('Q'==a){ if(b>=c){//交換 int t=c; c=b; b=t; } //b-c中選擇最大的數 int max=list.get(b-1); for(int m=b;m<c;m++){ if(max<list.get(m)){ max=list.get(m); } } results.add(max);//end } if('U'==a){ list.set(b-1, c); } } //輸出 for(int n=0; n<results.size(); n++){ System.out.println(results.get(n)); } }while(sc1.hasNext()); sc1.close(); } }