这道题目题意理解非常重要,只要理解了意思就很水了!
大概意思就是:一种是对第K个数以前的数的第一个进行删除,另一个则是在整个序列后添加这第K个数,使得整个序列为同一个数字, 后者显然是无效的!你只要判断k后的数与第k个数是不是相同,不同直接无解,相同则有解!然后再删除第k个数前面的数,直至所有数相同!
#include <iostream>
#include <cstdio>
using namespace std;
const int maxn=100000;
int a[maxn];
int main()
{
int n,k,i;
while(scanf("%d%d",&n,&k)!=EOF)
{
for(i=1; i<=n; i++)
scanf("%d",&a[i]);
int flag=true;
for(i=k; i<=n; i++)
{
if(a[i]!=a[k])
{
flag=false;
break;
}
}
if(!flag)
printf("-1\n");
else
{
for(i=k; i>=1; i--)
{
if(a[i]!=a[k])
{
printf("%d\n",i);
return 0;
}
}
printf("0\n");
}
}
return 0;
}