fork download
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int n, q;
  6. char ip[100005];
  7. bool a[100005], b[100005];
  8.  
  9. scanf("%d %d", &n, &q);
  10. scanf("%s", &ip);
  11.  
  12. for(int i=0; i<n; i++)
  13. a[i]=ip[i]-'0';
  14.  
  15. scanf("%s", &ip);
  16. for(int i=0; i<n; i++)
  17. b[i]=ip[i]-'0';
  18.  
  19. char str[10], val;
  20. int index, pos, i;
  21. bool carry;
  22. while(q--)
  23. {
  24. scanf("%s", str);
  25. scanf("%d", &index);
  26. pos = n-index-1;
  27. if(str[4] == 'a')
  28. {
  29. scanf(" %c", &val);
  30. a[pos] = val=='0'?false:true;
  31. }
  32. else if(str[4] == 'b')
  33. {
  34. scanf(" %c", &val);
  35. b[pos] = val=='0'?false:true;
  36. }
  37. else if(str[4] == 'c')
  38. {
  39. i = pos+1;
  40. for(; i<n; i++)
  41. {
  42. if(!(a[i] ^ b[i]))
  43. break;
  44. }
  45.  
  46. if(i==n)
  47. carry = false;
  48. else if(a[i])
  49. carry=true;
  50. else
  51. carry=false;
  52.  
  53. if(index==n)
  54. printf("%d", carry);
  55. else
  56. printf("%d", (a[pos]+b[pos]+carry)%2);
  57. }
  58. }
  59. return 0;
  60. }
  61.  
Success #stdin #stdout 0.01s 2896KB
stdin
5 5
00000
11111
set_a 0 1
get_c 5
get_c 1
set_b 2 0
get_c 5
stdout
100