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. if( n == 0 ) return 0 ;
  32. for( int r = 0 ; r < n; r++) {
  33.  
  34. if(a[r] == 0) ++cnt;
  35.  
  36. while( cnt > k && l < n ) {
  37. if( a[l] == 0) --cnt;
  38. l++;
  39. }
  40.  
  41.  
  42. int dainow = r - l +1;
  43. if( dainow > ans) {
  44. ans = dainow;
  45. start = l ; end = r;
  46. }
  47.  
  48. }
  49.  
  50. printf("%d\n", ans);
  51. if( n == 1 && k == 0 && a[0] == 0 ) {
  52. printf("0");
  53. return 0 ;
  54. }
  55. for (int i = 0; i < n; i++) {
  56.  
  57. if (i >= start && i <= end) {
  58. printf("1");
  59. } else {
  60. printf("%d", a[i]);
  61. }
  62.  
  63. if (i < n - 1) {
  64. printf(" ");
  65. }
  66. }
  67.  
  68.  
  69.  
  70.  
  71. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
Standard output is empty