華為[程式設計題] 最高分是多少 (水題)
阿新 • • 發佈:2019-01-05
[程式設計題] 最高分是多少
時間限制: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; }