华为——查分系统

来源:互联网 发布:苹果cms会员中心模板 编辑:程序博客网 时间:2024/05/22 22:41
package OJ;


import java.util.*;


public class Bully {


/**
* @老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某
* 位同学的成绩. 

* 输入描述:
* 输入包括多组测试数据。
* 每组输入第一行是两个正整数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
*/
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String[] s = str.split(" ");
int num_stu = Integer.parseInt(s[0]);
int num_act = Integer.parseInt(s[1]);

str = sc.nextLine();
String[] score = str.split(" ");
int[] sco = new int[score.length+1];
for(int i=1;i<sco.length;i++){
sco[i] = Integer.parseInt(score[i-1]);
}

LinkedList<String> link = new LinkedList<String>();

while(num_act>0){
str = sc.nextLine();
String[] a = str.split(" ");
if(a[0].equals("Q")){
fun_Q(a,link,sco,num_stu);
}
else if(a[0].equals("U")){
fun_U(a,link,sco,num_stu);
}
num_act--;
}

Iterator<String> it = link.iterator();
while(it.hasNext())
sop(it.next());

}


//更新成绩
private static void fun_U(String[] a, LinkedList<String> link, int[] sco,int num_stu) {

for(int i=1;i<=num_stu;i++){
if(Integer.parseInt(a[1])==i){
sco[i] = Integer.parseInt(a[2]);
break;
}
}
}


//查询成绩
private static void fun_Q(String[] a, LinkedList<String> link, int[] sco,int num_stu) {
int min = Integer.parseInt(a[1]);
int max = Integer.parseInt(a[2]);
int max_score = sco[min];
for(int i=min+1;i<=max;i++){
if(max_score<sco[i])
max_score = sco[i];
}

link.add(max_score+"");
}




public static void sop(Object o){
System.out.println(o);
}
}
0 0
原创粉丝点击