时间限制:1秒
空间限制:65536K
老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.
输入描述:
输入包括多组测试数据。
每组输入第一行是两个正整数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。
输出描述:
对于每一次询问操作,在一行里面输出最高成绩.
输入例子1:
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
输出例子1:
5
6
5
9
测试用例:
17 9
57 6 6 49 44 38 12 41 52 43 57 21 220 1 30 39
Q 3 9
U 9 34
Q 14 7
U 8 78
U 5 79
Q 1 7
Q 11 4
Q 12 6
Q 13 4
对应输出应该为:
52
57
79
79
78
79
测试用例:
12 27
1 15 16 15 6 19 24 39 26 26 14 7
U 8 80
Q 1 3
Q 5 3
Q 1 3
U 5 14
Q 12 10
Q 5 8
U 8 62
U 3 8
U 2 47
U 7 42
U 2 1
Q 3 4
Q 1 10
Q 4 10
U 11 7
Q 6 5
Q 2 2
Q 10 10
U 7 12
U 2 45
U 10 51
U 4 82
U 7 9
U 2 64
U 10 3
Q 11 5
对应输出应该为:
16
16
16
26
80
15
62
62
19
1
26
62
package huawei2016;
import java.util.Scanner;
publicclass HighestScore {
publicstaticintgetMax(int[] a,intm,intn)//从m到n的最大成绩,数组a从m-1到n-1的最大值
{
inttemp=0;
if(m>n)
{
temp=n;
n=m;
m=temp;
}
intmax=a[m-1];//a[m-1]存储a[m]的成绩
for(inti=m;i<n;i++)
{
if(a[i]>max)
max=a[i];
}
returnmax;
}
{
Scanner scan = newScanner(System.in);//这种输入要学会
while(scan.hasNext())//这是要接受多组输入的节奏啊
{
String str = scan.nextLine();//获取学生数和问答数
intnum1,num2;//num1表示学生数目,num2表示操作数
String[] nums = str.split(" ");
num1=Integer.parseInt(nums[0]);
num2=Integer.parseInt(nums[1]);
String scores=scan.nextLine();//初始学生成绩
String[] score=scores.split(" ");//nums1个成绩
intlen=score.length;
int[] num=newint[len];//成绩转换为数字
int[] max=newint[1000];
intcount=0;//咨询次数,要输出对应次数的最大值
for(inti=0;i<len;i++)
{
num[i]=Integer.parseInt(score[i]);
}
for(inti=0;i<num2;i++)//处理问答
{
String operations=scan.nextLine();
String[] operate=operations.split(" ");
if(operate[0].equalsIgnoreCase("Q"))//question
{
count++;
max[count-1]=getMax(num,Integer.parseInt(operate[1]),Integer.parseInt(operate[2]));
}
if(operate[0].equalsIgnoreCase("U"))//update
{
num[Integer.parseInt(operate[1])-1]=Integer.parseInt(operate[2]);
}
}
for(inti=0;i<count;i++)
{
System.out.println(max[i]);
}
}
}
}