fork(1) download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main(){
  6. int s[2][110];
  7. int d[5][110]={0};
  8. int l;
  9. string str;
  10. cin>>str;
  11. for (int i=0;i<str.size();++i){
  12. if (str[i]=='0') s[0][i]=0;
  13. else s[0][i]=1;
  14. }
  15. cin>>str;
  16. for (int i=0;i<str.size();++i){
  17. if (str[i]=='0') s[1][i]=0;
  18. else s[1][i]=1;
  19. }
  20. l = str.size();
  21. if (l==1) return cout<<"0"<<endl, 0;
  22. for (int i=0;i<l-1;++i){
  23. for (int j=0;j<5;++j){
  24. //not put
  25. if (j==0){
  26. if (s[0][i+1]==0 && s[1][i+1]==0){
  27. if (s[0][i]==0) d[3][i+1]=max(d[3][i+1],d[j][i]+1);
  28. if (s[1][i]==0) d[4][i+1]=max(d[4][i+1],d[j][i]+1);
  29. }
  30. if (s[0][i]==0 && s[1][i]==0){
  31. if (s[0][i+1]==0) d[1][i+1]=max(d[1][i+1],d[j][i]+1);
  32. if (s[1][i+1]==0) d[2][i+1]=max(d[2][i+1],d[j][i]+1);
  33. }
  34. for (int k=0;k<5;++k){
  35. d[k][i+1]=max(d[k][i+1],d[j][i]);
  36. }
  37. }
  38. else if (j==3 || j==4){
  39. for (int k=0;k<5;++k){
  40. d[k][i+1]=max(d[k][i+1],d[j][i]);
  41. }
  42. }
  43. else if (j==1){
  44. if (s[0][i+1]==0 && s[1][i+1]==0){
  45. if (s[1][i]==0) d[4][i+1]=max(d[4][i+1],d[j][i]+1);
  46. }
  47. for (int k=0;k<5;++k){
  48. d[k][i+1]=max(d[k][i+1],d[j][i]);
  49. }
  50. }
  51. else if (j==2){
  52. if (s[0][i+1]==0 && s[1][i+1]==0){
  53. if (s[0][i]==0) d[3][i+1]=max(d[3][i+1],d[j][i]+1);
  54. }
  55. for (int k=0;k<5;++k){
  56. d[k][i+1]=max(d[k][i+1],d[j][i]);
  57. }
  58. }
  59.  
  60. }
  61. }
  62. int ans=0;
  63. for (int i=0;i<5;++i){
  64. ans = max(ans, d[i][l-1]);
  65. }
  66. cout<<ans<<endl;
  67. }
Success #stdin #stdout 0s 4400KB
stdin
Standard input is empty
stdout
0