[编程题] 序列最小化

时间限制:1秒

空间限制:32768K

有一个长度为N的序列。一开始,这个序列是1, 2, 3,... n - 1, n的一个排列。

对这个序列,可以进行如下的操作:

每次选择序列中k个连续的数字,然后用这k个数字中最小的数字替换这k个数字中的每个数字。

我们希望进行了若干次操作后,序列中的每个数字都相等。请你找出需要操作的最少次数。

输入描述:

 

第一行:两个数字n, k,含义如题,满足2 <= k <= n <= 105;

第二行:n个数字,是1, 2, 3,...n的一个排列。


 

输出描述:

一个整数,表示最少的次数。

输入例子1:

2 2
2 1

输出例子1:

1

输入例子2:

4 3
1 2 3 4

输出例子2:

2
int main()
{
    int n,k,i,m,cou=0,num=1;
    scanf("%d%d",&n,&k);
    for(i=0;i<n;i++)
    {
        scanf("%d",&m);
        cou++;
        if(cou%k==0 && i<n-1)
        {
            cou=1;
            num++;
        }
    }
    if(n==k)
    {
        printf("1\n");
    }
    else
    {
        printf("%d\n",num);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41245381/article/details/81545310
今日推荐