Ах ты ж мелкий, сам КБО написать не можешь?) - это приговор.
Объяснение:
#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;
}
javascript:
function Вычислить(число) {
var массив = [], м1 = [], м2 = [], с1 = 0, с2 = 0;
for (let сч = 1; сч <= число; сч++) массив.push(сч);
for (let сч = число - 1; сч >= 0; сч--)
if (с1 > с2) { м2.push(массив[сч]); с2 += массив[сч]; }
else { м1.push(массив[сч]); с1 += массив[сч]; }
if (с1 != с2) return false;
else {
var рез = "";
for (let сч = 1; сч <= число; сч++)
if (м1.indexOf(сч) != -1) рез += "+"; else рез += "-";
return рез;
}
}
document.write(Вычислить(8) + "<br />");
document.write(Вычислить(15) + "<br />");
document.write(Вычислить(40) + "<br />");
document.write(Вычислить(99) + "<br />");
+--++--+
--++--++--++--+
+--++--++--++--++--++--++--++--++--++--+
--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+