编辑代码

#include <stdio.h>
#include <stdlib.h>

int count_elegant_subarrays(int A[], int n, int k) 
{
    int result = 0;
    
    for (int i = 0; i < n; i++) 
    {
        int count[100001] = {0}; // 存储每个元素的出现次数,假设元素范围在0到100000之间
        int max_count = 0; // 子数组中出现最多次数的元素的出现次数
        
        for (int j = i; j < n; j++) 
        {
            count[A[j]]++;
            if (count[A[j]] > max_count) 
            {
                max_count = count[A[j]];
            }
            
            if (max_count >= k) 
            {
                result++;
            }
        }
    }
    
    return result;
}

int main() 
{
    int A_length, k;
    scanf("%d %d", &A_length, &k);
    int* A = (int*) malloc(A_length * sizeof(int));
    
    for (int i = 0; i < A_length; i++) 
    {
        scanf("%d", &A[i]);
    }
    
    int result = count_elegant_subarrays(A, A_length, k);
    printf("%d\n", result);
    
    free(A);
    return 0;
}