fork download
  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<iostream>
  6. #include<fstream>
  7. #include<map>
  8. #include<ctime>
  9. #include<set>
  10. #include<queue>
  11. #include<cmath>
  12. #include<vector>
  13. #include<bitset>
  14. #include<functional>
  15. #define x first
  16. #define y second
  17. #define mp make_pair
  18. #define pb push_back
  19. #define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
  20. #define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
  21. using namespace std;
  22.  
  23. typedef long long LL;
  24. typedef double ld;
  25.  
  26. const int MAX=1000000+50;
  27.  
  28. int n,m;
  29. int a[MAX],b[MAX];
  30.  
  31. int main()
  32. {
  33. // freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
  34. int i,j;
  35. scanf("%d",&n);
  36. REP(i,1,n)
  37. scanf("%d",&a[i]);
  38. scanf("%d",&m);
  39. REP(i,1,m)
  40. scanf("%d",&b[i]);
  41. for(i=m;i>=1;--i)
  42. for(;b[i]>=1;)
  43. {
  44. b[i]--;
  45. if(i==1 && a[i])
  46. {
  47. a[i]=0;
  48. b[i+1]++;
  49. i+=2;
  50. break;
  51. }
  52. if(a[i+1])
  53. {
  54. j=i+1;
  55. for(;a[j+2];j+=2)
  56. a[j]=0;
  57. a[j]=0;
  58. a[j+1]=1;
  59. }
  60. else if(a[i-1])
  61. {
  62. a[i-1]=0;
  63. b[i+1]++;
  64. i+=2;
  65. break;
  66. }
  67. else if(a[i])
  68. {
  69. a[i]=0;
  70. b[max(i-2,1)]++;
  71. b[i+1]++;
  72. i+=2;
  73. break;
  74. }
  75. else
  76. a[i]++;
  77. }
  78. int num=0,c=max(n,m);
  79. REP(i,1,c+20)
  80. if(a[i])
  81. num=i;
  82. printf("%d ",num);
  83. REP(i,1,num)
  84. {
  85. printf("%d",a[i]);
  86. if(i!=num)
  87. printf(" ");
  88. }
  89. printf("\n");
  90. return 0;
  91. }
  92.  
Success #stdin #stdout 0s 11160KB
stdin
Standard input is empty
stdout
0