Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef long double ld;
  5.  
  6. const int N = 1e5 + 7;
  7.  
  8. int a[N], b[N];
  9. bool f[N][6];
  10.  
  11. int32_t main(){
  12. iostream::sync_with_stdio(0);
  13. int n;
  14. cin >> n;
  15. for(int i = 0; i < n - 1; i++)
  16. cin >> a[i];
  17. for(int i = 0; i < n - 1; i++)
  18. cin >> b[i];
  19.  
  20. f[0][0] = true;
  21. f[0][1] = true;
  22. f[0][2] = true;
  23. f[0][3] = true;
  24.  
  25. for(int i = 1; i < n; i++)
  26. for(int j = 0; j < 4; j++)
  27. for(int pr = 0; pr < 4; pr ++)
  28. if(f[i-1][pr] && (pr | j) == a[i - 1] && (pr & j) == b[i - 1])
  29. f[i][j] = true;
  30.  
  31. for(int i = 0; i < n; i++)
  32. {
  33. bool res = false;
  34. for(int j = 0; j < 4; j++)
  35. res |= f[i][j];
  36. if(!res){
  37. cout << "NO";
  38. return 0;
  39. }
  40. }
  41. cout << "YES" << endl;
  42. vector<int> v;
  43. for(int i = n-1; i >= 0; i--)
  44. for(int j = 0; j < 4; j++)
  45. if(f[i][j] && (!v.size() | (v.size() && (v.back() & j) == b[i] && (v.back() & j) == b[i])))
  46. {
  47. v.push_back(j);
  48. break;
  49. }
  50.  
  51. reverse(v.begin(), v.end());
  52. for(auto i : v)
  53. cout << i << ' ';
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement