Есть ответ 👍

Кто знает програмирование на языке с++ решите задачу A. Краучиха
ограничение по времени на тест1 секунда
ограничение по памяти на тест256 мегабайт
вводстандартный ввод
выводстандартный вывод
Давным давно в армии служили два солдата, Краучиха и его босс (К сожалению, по сей день нам не известно настоящая имя босса). Однажды босс дал Краучихе задание и строку (обозначим как S) из строчных букв чтобы найти красивый хэндл для регистрации на Codeforces. Хэндл называется красивым если он является подстрокой S и содержит максимальное количество различных букв. Краучиха как верный решил найти красивый хэндл с минимальной длиной, но тут у него появились проблемы: он оказывается не умеет считать ему найти минимальную длину красивого хэндла, тогда возможно он вам тоже взять хорошое место на олимпиаде...

Входные данные
В первой и единственной строке дана строка S из строчных латинских букв. (1≤|S|≤5∗105)
Выходные данные
Выведите минимальную длину красивого хэдла

Система оценки
В этой задаче 4 сабтасков

1. (1≤|S|≤100). 21 баллов

2. (1≤|S|≤1000). 17 баллов

3. S состоит только из букв а, b. S ∈ {a, b}. 19 баллов

4. (1≤|S|≤5∗105). 43 баллов

Примеры
входные данные
maxbey
выходные данные
6
входные данные
abacaba
выходные данные
3
входные данные
accdcd
выходные данные
4

105
491
Посмотреть ответы 2

Ответы на вопрос:

ВИТ21
4,5(38 оценок)

Ах ты ж мелкий, сам КБО написать не можешь?) 19 баллов - это приговор.

Объяснение:

#include <bits/stdc++.h>

 

using namespace std;

 

int cnt[30], kol;

 

string s;

 

bool check (int mid) {

 int x[30]{}, y = 0;

 for (int i = 0; i < mid; i++) {

   x[s[i] - 'a' + 1]++;

   if (x[s[i] - 'a' + 1] == 1)

     y++;

 }

 int l, r = mid - 1;

 for (l = 0; r < s.size();) {

   if (y == kol)

     return true;

   if (x[s[l] - 'a' + 1] == 1)

     y--;

   x[s[l] - 'a' + 1]--;

   l++;

   r++;

   if (x[s[r] - 'a' + 1] == 0)

     y++;

   x[s[r] - 'a' + 1]++;

 }

 return false;

}

 

int main()

{

 ios::sync_with_stdio(0);

 cin.tie(0);

 cin >> s;

 for (auto it : s)

   cnt[it - 'a' + 1]++;

 for (int i = 1; i <= 26; i++) {

   if (cnt[i] > 0)

     kol++;

 }

 int l = 0, r = s.size();

 while (r - l > 1) {

   int mid = l + (r - l) / 2;

   if (check (mid))

     r = mid;

   else

     l = mid;

 }

 cout << r;

}


I-1 символ из алфавита, мощность алфавита-n i =9 бит значит n =2^9=512 ответ: 512 ^-это степень

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

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

Подпишись на наш телеграмм канал

GTP TOP NEWS