Advertisement
a53

teatru

a53
Mar 5th, 2017
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. char s[55001];
  4. long imax, jmax, Lmax, n, k;
  5. long f[91];
  6.  
  7. void Citeste();
  8. void Afis();
  9. void Calculeaza();
  10.  
  11. int main()
  12. {
  13. freopen("teatru.in", "r", stdin);
  14. freopen("teatru.out", "w", stdout);
  15. Citeste();
  16. Calculeaza();
  17. Afis();
  18. return 0;
  19. }
  20.  
  21. void Citeste()
  22. {
  23. scanf("%d%d", &n, &k);
  24. scanf("%c", &s[0]); // citeste '\n'
  25. for (long int i = 0; i < n; i++ )
  26. scanf("%c", s + i);
  27. }
  28.  
  29. void Afis()
  30. {
  31. printf("%d\n", Lmax);
  32. for (long int i = imax; i <= jmax; i++ )
  33. printf("%c", s[i]);
  34. printf("\n");
  35. }
  36.  
  37. void Calculeaza()
  38. {
  39. long int i = 0, j = 0, nr = 0;
  40. f[s[0]]++; nr++;
  41. do
  42. {
  43. while (nr <= k && j < n)
  44. {
  45. j++;
  46. if ( j >= n ) break;
  47. if (f[s[j]] == 0)
  48. {
  49. f[s[j]]++;
  50. nr++;
  51. }
  52. else f[s[j]]++;
  53. }
  54. if (j - i > Lmax)
  55. {
  56. Lmax = j - i;
  57. imax = i; jmax = j - 1;
  58.  
  59. }
  60.  
  61. while ( nr > k )
  62. {
  63. f[s[i]]--;
  64. if ( f[s[i]] == 0 ) nr--;
  65. i++;
  66. }
  67. } while (i < n && j < n);
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement