老師想知道從某某同學當中,分數最高的是多少,現在請你編程模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.
輸入描述:
輸入包括多組測試數據。
每組輸入第一行是兩個正整數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
#include<iostream>
#include<string>
using namespace std;
int main()
{ int n,m;
//cout<<"輸入兩個數N M:"<<endl;
//cin>>n;
//cin>>m;
while(~scanf("%d %d",&n,&m))
{
int* score=new int[n];
//cout<<"輸入N個學生的成績:"<<endl;
for(int i=0;i<n;i++)
cin>>score[i];
char str;int a,b;int maxScore=0;
int *result=new int[m];int num=0;
for(int j=0;j<m;j++)
{
cin>>str;
cin>>a;
cin>>b;
switch (str)
{
case 'Q':
for (int i=a-1;i<b;i++)
{
if (maxScore<score[i])
{
maxScore=score[i];
}
}
result[num++]=maxScore;
maxScore=0;
break;
case 'U':
score[a-1]=b;
break;
}
}
for(int k=0;k<num;k++)
{
cout<<result[k]<<endl;
}
}
//system("pause");
return 0;
}
自己測試正確,在線測試通過不了,找不到原因。。。。。。