最高分是多少(華爲16年研發試題)

老師想知道從某某同學當中,分數最高的是多少,現在請你編程模擬老師的詢問。當然,老師有時候需要更新某位同學的成績. 
輸入描述:
輸入包括多組測試數據。
每組輸入第一行是兩個正整數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;
}


自己測試正確,在線測試通過不了,找不到原因。。。。。。
發佈了41 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章