Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int count(string s1, string s2){
  6. int sum = 0;
  7. for(int i = 0 ; i < s1.length() ; i++){
  8. if(s1[i] != s2[i]) sum++;
  9. }
  10. return sum;
  11. }
  12.  
  13. void calc_221(string s1, string s2, string s3){
  14. int l = -1,r = -1;
  15. for(int i = 0 ; i < s1.length() ; i++){
  16. if(s1[i] != s2[i]){
  17. if(l == -1){
  18. l = i;
  19. }else{
  20. r = i;
  21. break;
  22. }
  23. }
  24. }
  25. if(s3[l] != s2[l] && s3[l] != s1[l]){
  26. if(s3[r] == s1[r]){
  27. s2[r] = s3[r];
  28. cout<<s2<<endl; return; //DONE!!!
  29. }else{ //s3[r] == s2[r]
  30. s1[r] = s3[r];
  31. cout<<s1<<endl; return; //DONE!!!
  32. }
  33. }else{
  34. if(s3[l] == s1[l]){
  35. s2[l] = s3[l];
  36. cout<<s2<<endl; return; //DONE!!!
  37. }else{ //s2[l] == s1[l]
  38. s1[l] = s3[l];
  39. cout<<s1<<endl; return; //DONE!!!
  40. }
  41. }
  42. }
  43.  
  44. void calc_211(string s1, string s2, string s3){
  45. cout<<s3<<endl; return;
  46. }
  47.  
  48. void calc_222(string s1, string s2, string s3){
  49. int count = 0;
  50. int l = -1;
  51. for(int i = 0 ; i < s1.length() ; i++){
  52. if(s1[i] != s2[i] || s2[i] != s3[i] || s1[i] != s3[i]) {
  53. if(l == -1){
  54. l = i;
  55. }
  56. count++;
  57. }
  58. }
  59. if(count != 3) {cout<<"Impossible"<<endl;return;}
  60.  
  61. if(s1[l] == s2[l]) {s3[l] = s1[l];cout<<s3<<endl;return;}
  62. if(s3[l] == s2[l]) {s1[l] = s3[l];cout<<s1<<endl;return;}
  63. if(s1[l] == s3[l]) {s2[l] = s1[l];cout<<s2<<endl;return;}
  64. }
  65.  
  66.  
  67. int main(){
  68. string s1,s2,s3;
  69. cin>>s1>>s2>>s3;
  70.  
  71. int ab,bc,ac;
  72. ab = count(s1,s2);
  73. bc = count(s2,s3);
  74. ac = count(s1,s3);
  75.  
  76. // cout<<ab<<" "<<bc<<" "<<ac<<endl;
  77. if(ab >= 3 || bc >= 3 || ac >= 3) {cout<<"Impossible"<<endl;return 0;}
  78. if(ab == 0 || bc == 0 || ac == 0) {cout<<"Ambiguous"<<endl;return 0;}
  79. if(ab == 1 && bc == 1 && ac == 1) {cout<<"Ambiguous"<<endl;return 0;}
  80.  
  81. // 2 2 1
  82. if(ab == 2 && bc == 2 && ac == 1) {calc_221(s1,s2,s3);return 0;}
  83. if(ab == 1 && bc == 2 && ac == 2) {calc_221(s3,s2,s1);return 0;}
  84. if(ab == 2 && bc == 1 && ac == 2) {calc_221(s1,s3,s2);return 0;}
  85. //DONE
  86.  
  87. // 2 1 1
  88. if(ab == 2 && bc == 1 && ac == 1) {calc_211(s1,s2,s3);return 0;}
  89. if(ab == 1 && bc == 2 && ac == 1) {calc_211(s3,s2,s1);return 0;}
  90. if(ab == 1 && bc == 1 && ac == 2) {calc_211(s2,s1,s2);return 0;}
  91.  
  92. // 2 2 2
  93. if(ab == 2 && bc == 2 && ac == 2) {calc_222(s1,s2,s3);return 0;}
  94. return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement