最高分是多少
老師想知道從某某同學當中,分數最高的是多少,現在請你編程模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.
輸入描述:輸入包括多組測試數據。每組輸入第一行是兩個正整數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 71 2 3 4 5Q 1 5U 3 6Q 3 4Q 4 5U 4 5U 2 9Q 1 5
輸出例子:
5659
#include <stdio.h>#include <algorithm>using namespace std; const int MAXN=100000; int data[MAXN+5]; int querymax ( int l , int r ) { int ans=data[l]; for(int i=l+1;i<=r;i++) ans=max(ans,data[i]); return ans;} void update(int idx,int value){ data[idx]=value;} int main(){ int n,m; while(scanf("%d%d",&n,&m) != EOF){ for(int i=1;i<=n;i++){ scanf("%d",&data[i]); } char order; int a,b; for(;m--;){ scanf(" %c%d%d",&order,&a,&b); if(order==U){ update(a,b); }else if(order==Q){ if(a>b)swap(a,b); printf("%d
",querymax(a,b)); } } } return 0;}
今天刷華為OJ感覺被虐的很慘啊
python運行超時,沒辦法,之後還是用C/C++來刷題吧
推薦閱讀:
TAG:筆試 |