#include<iostream> using namespace std; int find_max(int *s, int A, int B){ int temp = A-1; for(int i = A; i < B; i++){ if(s[i] > s[temp]) temp = i; } return s[temp]; } int main(){ int N,M; while(cin>>N>>M){ int *score = new int[N]; int *result = new int [M]; int j = 0; for(int i = 0; i < N; i++) cin>>score[i]; for(int i = 0; i < M; i++){ char ch; int A,B; cin>>ch>>A>>B; if(ch == 'Q'){ if(A > B){ int temp = A; A = B; B = temp; } result[j] = find_max(score, A, B); j++; } else{ score[A-1] = B; } } for(int i = 0; i < j; i++) cout<<result[i]<<endl; } return 0; }
这道题的坑在于查询时候的A和B的大小,还有就是题目的要求是多组输入数据,其他的就应该没什么问题了