fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int zlicz[130];
  5.  
  6. int main() {
  7. ios_base::sync_with_stdio(0);
  8. cin.tie(0);
  9. cout.tie(0);
  10.  
  11.  
  12. string slowo;
  13. int k, l, rozne=0, o=0, najlepszy_wynik=1000000, wynik=0, ile_roznych=0, p;
  14. cin>>slowo>>k;
  15. l=slowo.size();
  16.  
  17.  
  18. for (int i=0; i<l; i++){
  19. zlicz[(int)(slowo[i])]++;
  20. }
  21. for (int i=0; i<130; i++){
  22. if (zlicz[i]>0){
  23. rozne++;
  24. zlicz[i]=0;
  25. }
  26. }
  27. if (rozne<k){
  28. cout<<"BRAK";
  29. return 0;
  30. }
  31.  
  32.  
  33. for (int g=0; g<l; g++){
  34. if (ile_roznych==k){
  35. if (o==0){
  36. zlicz[(int)(slowo[0])]--;
  37. o++;
  38. }
  39. while(zlicz[(int)(slowo[o-1])]>0 && o>0){
  40. zlicz[(int)(slowo[o])]--;
  41. o++;
  42. wynik--;
  43. }
  44. if (wynik<najlepszy_wynik){
  45. najlepszy_wynik=wynik;
  46. p=o;
  47. }
  48. ile_roznych--;
  49. }
  50. if (ile_roznych<k){
  51. if (zlicz[(int)(slowo[g])]==0){
  52. ile_roznych++;
  53. }
  54. zlicz[(int)(slowo[g])]++;
  55. wynik++;
  56. }
  57. }
  58. cout<<p<<" "<<p+najlepszy_wynik-1;
  59. }
Success #stdin #stdout 0.01s 5528KB
stdin
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaadx
3
stdout
64 90