[编程题] 最高分是多少

来源:互联网 发布:网络液晶广告机 编辑:程序博客网 时间:2024/04/29 05:24

时间限制: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;

      }

    

      publicstaticvoidmain(String[]args)

      {

           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]);

               }

         }

      }

}

原创粉丝点击