█████████ ████ ███░░░░░███ ░░███ ███ ░░░ ██████ ███████ ██████ ██████ ░███ ███░░███ ███░░███ ███░░███ ███░░███ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░███ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ░███ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░

Envío 2186

Problema 0xc9 - Substring más corta con mínimo K caracteres diferentes

Caso # Resultado Tiempo Memoria
#1
Correcto
0.007 s 1 KBi
#2
Correcto
0.007 s 1 KBi
#3
Correcto
0.008 s 1 KBi
#4
Correcto
0.007 s 1 KBi
#5
Correcto
0.007 s 1 KBi
#6
Correcto
0.008 s 1 KBi
#7
Incorrecto
0.007 s 1 KBi
#8
Correcto
0.007 s 1 KBi
#9
Correcto
0.006 s 1 KBi
#10
Correcto
0.097 s 1 KBi
#11
Correcto
0.026 s 1 KBi
#12
Correcto
0.101 s 1 KBi
#13
Correcto
0.023 s 1 KBi
#14
Correcto
0.102 s 1 KBi
#15
Correcto
0.093 s 2 KBi
#16
Correcto
0.023 s 1 KBi
#17
Correcto
0.094 s 1 KBi
#18
Correcto
0.077 s 1 KBi
#19
Correcto
0.069 s 2 KBi
#20
Correcto
0.026 s 1 KBi
#21
Correcto
0.058 s 1 KBi
#22
Correcto
0.054 s 1 KBi
#23
Correcto
0.051 s 1 KBi
#24
Incorrecto
0.01 s 1 KBi
#25
Correcto
0.054 s 1 KBi
#26
Correcto
0.055 s 1 KBi
#27
Correcto
0.054 s 1 KBi
#28
Correcto
0.045 s 1 KBi
#29
Incorrecto
0.009 s 1 KBi
#30
Correcto
0.027 s 1 KBi
#31
Correcto
0.043 s 1 KBi
#32
Correcto
0.037 s 2 KBi
Puntos totales: 91 / 100

Código

#include <bits/stdc++.h>
using namespace std;

int main() {
  string s;
  cin >> s;
  int k;
  cin >> k;

  if (k == 26) {
    cout << s.size() << endl;
  } else {
    int start = 0;
    unordered_map<int, int> m;
    int min_size = INT_MAX;
    for (int i = 0; i < s.size(); i++) {
      char c = s[i];
      m[c]++;
      if (m.size() == k) {
        min_size = min(min_size, i - start + 1);
        while (m.size() == k) {
          char st = s[start++];
          m[st]--;
          if (m[st] == 0) {
            m.erase(st);
          } else {
            min_size = min(min_size, i - start + 1);
          }
        }
      }
    }
    if (min_size == INT_MAX)
      cout << -1 << endl;
    else
      cout << min_size << endl;
  }
}