One day shooshuns found a sequence of n integers, written on a blackboard. The shooshuns can perform one operation with it, the operation consists of two steps:
Find the number that goes k-th in the current sequence and add the same number to the end of the sequence;
Delete the first number of the current sequence.
The shooshuns wonder after how many operations all numbers on the board will be the same and whether all numbers will ever be the same.
Input
The first line contains two space-separated integers n and k (1 ≤ k ≤ n ≤ 105).
The second line contains n space-separated integers: a1, a2, …, an (1 ≤ ai ≤ 105) — the sequence that the shooshuns found.
Output
Print the minimum number of operations, required for all numbers on the blackboard to become the same. If it is impossible to achieve, print -1.
Examples
Input
3 2
3 1 1
Output
1
Input
3 1
3 1 1
Output
-1
Note
In the first test case after the first operation the blackboard will have sequence [1, 1, 1]. So, one operation is enough to make all numbers the same. Thus, the answer equals one.
In the second test case the sequence will never consist of the same numbers. It will always contain at least two distinct numbers 3 and 1. Thus, the answer equals -1.
题意:
有一个n个整数的序列,每次执行一个操作,找到当前序列中第k位的数字,并将相同的数字添加到序列的末尾,删除当前序列的第一个数字,问在进行了多少次操作之后,黑板上的所有数字将是相同的,不可能输出-1
解法:
从序列最后向前找到第一个不等与k位置数的位置,对位置进行判断即可
AC代码
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<math.h>
#include<set>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
int a[200005];
int main()
{
int n,k;
while(~scanf("%d %d",&n,&k))
{
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int v=k-1;//默认为全部相等
for(int i=n-1;i>=0;i--)
{
if(a[i]!=a[k-1])
{
v=i;
break;
}
}
if(v>k-1)
printf("-1\n");
else if(v==k-1)
printf("0\n");
else
printf("%d\n",v+1);
}
return 0;
}