#include <bits/stdc++.h>
using namespace std;
int n, m, f, x, y, a[1005], maxn;
map<int, int> ff;
int main(){
scanf("%d%d", &n, &m);
for (int i=1;i<=n;i++) scanf("%d", &a[i]);
for (int i=1;i<=m;i++){
scanf("%d%d%d", &f, &x, &y);
if (f == 1) a[x] = y;
else{
ff.clear();
maxn = 0;
for (int i=x;i<=y;i++){
ff[a[i]]++;
maxn = max(ff[a[i]], maxn);
}
for (int i=x;i<=y;i++){
if (ff[a[i]] == maxn){
printf("%d\n", a[i]);
break;
}
}
}
}
return 0;
}
我的思路是求出每个数出现的次数记录在ff中,并求出最大值,然后扫一遍ff,遇到跟最大值一样的就输出。
但是
样例过,却得零分。
请各位大佬指点!!!