Educational Codeforces Round 32

来源:互联网 发布:大数据的特点 编辑:程序博客网 时间:2024/05/22 00:30

C. K-Dominant Character
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given a string s consisting of lowercase Latin letters. Character c is called k-dominant iff each substring of s with length at least kcontains this character c.

You have to find minimum k such that there exists at least one k-dominant character.

Input

The first line contains string s consisting of lowercase Latin letters (1 ≤ |s| ≤ 100000).

Output

Print one number — the minimum value of k such that there exists at least one k-dominant character.

Examples
input
abacaba
output
2
input
zzzzz
output
1
input
abcde
output
3

很好的 二分 宛如智障的我 唉

#include<bits/stdc++.h>using namespace std;#define maxn 100000+10char a[maxn];int len;int check(int x){   int c[26+10];   memset(c,0,sizeof(c));   for(int j=0;j<x;j++){      c[a[j]-'a']++;   }   int sum=0;   for(int j=0;j<26;j++){      if(c[j]) sum++;      else c[j]=-1;   }   for(int j=x;j<len;j++){      if(c[a[j]-'a']>0){         c[a[j]-'a']++;      }      c[a[j-x]-'a']--;      if(c[a[j-x]-'a']==0){        sum--;      }      if(sum==0) return 0;   }   return 1;}int main(){    cin>>a;    len=strlen(a);    int l=0,r=len;    while(l<r){        int mid=(l+r)/2;        if(check(mid)){            r=mid;        }        else {            l=mid+1;        }    }    cout<<l<<endl;    return 0;}