fork download
  1. #include <stdio.h>
  2. #include<math.h>
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9. int main() {
  10.  
  11.  
  12. // bit 0 thành bit 1 để có được đoạn con liên tiếp dài nhất chỉ toàn bit 1
  13. // cho 1 day bit co n phan tu
  14. // doi duoc toi da k phan tu 0 thanh 1
  15. // in ra so phan tu cua day con nhieu 1 nhat
  16. // in ra mk sau khi doi
  17.  
  18.  
  19. int n, k;
  20. scanf("%d%d", &n, &k);
  21. int a[n+1];
  22. for(int i = 0; i < n; i++) {
  23. scanf("%d", &a[i]);
  24. }
  25.  
  26. int ans = 0 ;
  27. int l = 0;
  28. int cnt = 0;
  29. int start= 0 ,end = 0;
  30.  
  31. for( int r = 0 ; r < n; r++) {
  32.  
  33. if(a[r] == 0) ++cnt;
  34.  
  35. while( cnt > k && l < n ) {
  36. if( a[l] == 0) --cnt;
  37. l++;
  38. }
  39.  
  40.  
  41. int dainow = r - l +1;
  42. if( dainow > ans) {
  43. ans = dainow;
  44. start = l ; end = r;
  45. }
  46.  
  47. }
  48.  
  49. printf("%d\n", ans);
  50. for (int i = 0; i < n; i++) {
  51.  
  52. if (i >= start && i <= end) {
  53. printf("1");
  54. } else {
  55. printf("%d", a[i]);
  56. }
  57.  
  58. if (i < n - 1) {
  59. printf(" ");
  60. }
  61. }
  62.  
  63.  
  64.  
  65.  
  66. }
Success #stdin #stdout 0s 5284KB
stdin
5 10
1 2 3 4 5 
stdout
5
1 1 1 1 1