1. 程式人生 > >華為[程式設計題] 最高分是多少 (水題)

華為[程式設計題] 最高分是多少 (水題)

[程式設計題] 最高分是多少

時間限制: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
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
	int n,m;
	while(cin>>n>>m){
		vector<int> vec(n+1);
		for(int i=1;i<=n;i++)
			cin>>vec[i];
		char ch;
		int A,B;
		for(int i=0;i<m;i++){
			cin>>ch>>A>>B;
			if(ch == 'Q'){
				if(A > B)
					swap(A,B);//當為Q時,輸入資料可能A比B小 
				int max = -1;
				for(int j=A;j<=B;j++)
					if(max < vec[j])
						max = vec[j];
				cout<<max<<endl;
			}else{
				vec[A] = B;
			}
		}
	}
		
	return 0;
}