题目描述
给定一个有n 个元素按照升序排列的整数数组a1~an,和一个目标值target。找出给定目标值在数组中的开始位置(第一个),结束位置(最后一个)以及与目标值相同的元素个数。
如果数组中不存在目标值target,输出-1,-1,0 。
输入
输入共2行:
第1行,两个正整数 n,target ;
第 2行,n个空格隔开的正整数a1~an。
输出
输出共1行:
三个空格隔开的数据,给定目标值在数组中的开始位置,结束位置和个数;
如果不存在,输出,-1,-1,0。
样例输入输出
样例输入
6 8
5 7 7 8 8 10
样例输出
4 5 2
样例输入
6 6
5 7 7 8 8 10
样例输出
-1 -1 0
code
#include<iostream>
using namespace std;
int main()
{
freopen("item.in","r",stdin);
freopen("item.out","w",stdout);
long long n,t;
cin>>n>>t;
long long a[1000005];
for(int i = 1; i <= n; i++)
{
cin>>a[i];
}
long long f = 0;
for(int i = 1; i <= n; i++)
{
if(t == a[i])
{
f++;
}
}
if(f == 0)
{
cout<<"-1 -1 0";
return 0;
}
long long first = 0;
long long end = 0;
for(int i = 1; i <= n; i++)
{
if(t == a[i])
{
first = i;
break;
}
}
for(int i = n; i >= 1; i--)
{
if(t == a[i])
{
end = i;
break;
}
}
cout<<first<<" "<<end<<" "<<f;
return 0;
}