duoxida很喜歡玩數位遊戲,某天無聊的時候,他決定一個人玩數位遊戲。他黑板上寫下了一行總共有n個數,然後對其重複進行一個操作: 找到從左到右第k個的數x,在數位序列的最右邊增加一個x,刪除最左邊的第一個數位。 duoxida很想知道知道多少次操作後,這個序列就變得完全一樣。
輸入
數據的第一行爲一個整數t,1<=t<=10,表示測試用例的個數。每組樣例的第一行是n,k,(1≤k≤n≤1000)。 接下來一行有n個整數。
輸出
每個用例輸出一行,即操作次數,如果這個序列無法變得完全一樣,輸出"-1"。
樣例輸入
2
3 2
3 1 1
3 1
3 1 1
樣例輸出
1
-1
這個題先判斷第k個數是否與k後面的數都相等,相等則可以實現,可以實現則判斷操作的次數;若有不相等的數則不能實現,輸出-1。
判斷操作次數爲(k-1)減去前面的數中和第k個數相等相鄰的數的個數,例如3 1 1 1 1這五個數,如果k爲3,則需要(k-1)-1=1次,若k爲4,則需要(k-1)-2次即可。如果是1 3 1 1 1這五個數,當k爲3時則需要(k-1)-0=2次。
#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,k;
scanf("%d %d",&n,&k);
int str[1001];
for(int i=0; i<n; i++)
{
scanf("%d",&str[i]);
}
int flag=1;
int a=str[k-1];
for(int i=k; i<n; i++)
{
if(a!=str[i])
{
flag=0;
break;
}
}
if(flag==0)
printf("-1\n");
else
{
int sum=0;
for(int i=k-2; i>0; i--)
{
if(str[i]==a)
{
sum++;
}
else
break;
}
printf("%d\n",k-1-sum);
}
}
return 0;
}
本人菜雞一枚,如有不對,歡迎指正。