好吧,我等没出息的男人只能没事刷刷水题
题意,给你一串数字,输出其钟出现最多的数的第一次出现的地方和最后一次出现的地方
输入的时候将每个数的头和尾标记一下然后简单的判断一下最多的那个数的头和尾就行了
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<cstdio>
#include<map>
using namespace std;
int num[1000010];
int tou[1001010];
int wei[1001000];
int main()
{
int n,k,i;
while(scanf("%d",&n)!=EOF)
{
k=-11;
int a;int maxx=-222;
memset(num,0,sizeof(num));
for(i=1;i<=n;i++)
{
scanf("%d",&a);
k=max(k,a);
if(num[a]==0)
{
tou[a]=i;
}
num[a]+=1;
wei[a]=i;
maxx=max(maxx,num[a]);
}
int da=44443333;int xuan;
for(i=1;i<=k;i++)
{
if(num[i]==maxx)
{
if(wei[i]-tou[i]<da)
{
xuan=i;
da=wei[i]-tou[i];
}
else if(wei[i]-tou[i]==da)
{
if(tou[xuan]>tou[i])
xuan=i;
}
}
}
printf("%d %d\n",tou[xuan],wei[xuan]);
}
return 0;
}