Решение задачи со строками на C#

Я пытаюсь решить задачу

Требуется найти максимальную по длине подстроку данной строки, такую что каждый символ встречается в ней не более k раз.

Входные данные

В первой строке даны два целых числа n и k (1 ≤ n ≤ 100000, 1 ≤ k ≤ n ) , где n – количество символов в строке. Во второй строке n символов – данная строка, состоящая только из строчных латинских букв.

Выходные данные

В выходной файл выведите два числа – длину искомой подстроки и номер её первого символа. Если решений несколько, выведите любое.

Примеры

входные данные

3 1

abb

выходные данные

2 1

входные данные

5 2

ababa

выходные данные

4 1

Вот мой код:

using System;
using System.Collections.Generic;


internal class Program
{
    private static void Main(string[] args)
    {
       
        string[] str = Console.ReadLine().Split(' ');
        long n = long.Parse(str[0]);
        long k = long.Parse(str[1]);
        string mass = Console.ReadLine();
        Dictionary<char, long> dic = new Dictionary<char, long>();
        long max_len = 0;
        long start_simv = 1;
        int l = 0;
        for (int r = 0; r < n; r++)
        {
            if (dic.ContainsKey(mass[r]) != true)
                dic.Add(mass[r], 0);
            dic[mass[r]]++;
            while (dic[mass[r]] > k)
            {
                if (dic[mass[l]] > 0)
                    dic[mass[l]]--;
                l++;
            }
            if (max_len < r - l + 1)
            {
                max_len = r - l + 1;
                start_simv = l + 1;
            }
        }
        Console.WriteLine(max_len + " " + start_simv);

        Console.ReadLine();
    }
}

Выдает неправильный ответ. Задача тут: https://informatics.msk.ru/mod/statements/view.php?chapterid=112554#1

Заранее спасибо!


Ответы (0 шт):