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.
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.
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.
3 2 3 1 1
1
3 1 3 1 1
-1
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.
water.
完整代码:
/*30ms,0KB*/
#include<cstdio>
int main()
{
int n, k, temp, a, now, pos;
scanf("%d%d", &n, &k);
scanf("%d", &now);
pos = n;
temp = n;
bool possible = true;
while (--temp)
{
scanf("%d", &a);
if (a != now)
{
now = a;
pos = temp;
if (k <= n - pos)
{
possible = false;
break;
}
}
}
printf("%d", possible ? n - pos : -1);
return 0;
}

探讨了Shooshunsand序列中通过特定操作使所有元素相同所需的最小步骤数。输入包括序列长度及初始数值,输出为所需操作次数或无法实现时返回-1。
1496

被折叠的 条评论
为什么被折叠?



