Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int count(string s1, string s2){
- int sum = 0;
- for(int i = 0 ; i < s1.length() ; i++){
- if(s1[i] != s2[i]) sum++;
- }
- return sum;
- }
- void calc_221(string s1, string s2, string s3){
- int l = -1,r = -1;
- for(int i = 0 ; i < s1.length() ; i++){
- if(s1[i] != s2[i]){
- if(l == -1){
- l = i;
- }else{
- r = i;
- break;
- }
- }
- }
- if(s3[l] != s2[l] && s3[l] != s1[l]){
- if(s3[r] == s1[r]){
- s2[r] = s3[r];
- cout<<s2<<endl; return; //DONE!!!
- }else{ //s3[r] == s2[r]
- s1[r] = s3[r];
- cout<<s1<<endl; return; //DONE!!!
- }
- }else{
- if(s3[l] == s1[l]){
- s2[l] = s3[l];
- cout<<s2<<endl; return; //DONE!!!
- }else{ //s2[l] == s1[l]
- s1[l] = s3[l];
- cout<<s1<<endl; return; //DONE!!!
- }
- }
- }
- void calc_211(string s1, string s2, string s3){
- cout<<s3<<endl; return;
- }
- void calc_222(string s1, string s2, string s3){
- int count = 0;
- int l = -1;
- for(int i = 0 ; i < s1.length() ; i++){
- if(s1[i] != s2[i] || s2[i] != s3[i] || s1[i] != s3[i]) {
- if(l == -1){
- l = i;
- }
- count++;
- }
- }
- if(count != 3) {cout<<"Impossible"<<endl;return;}
- if(s1[l] == s2[l]) {s3[l] = s1[l];cout<<s3<<endl;return;}
- if(s3[l] == s2[l]) {s1[l] = s3[l];cout<<s1<<endl;return;}
- if(s1[l] == s3[l]) {s2[l] = s1[l];cout<<s2<<endl;return;}
- }
- int main(){
- string s1,s2,s3;
- cin>>s1>>s2>>s3;
- int ab,bc,ac;
- ab = count(s1,s2);
- bc = count(s2,s3);
- ac = count(s1,s3);
- // cout<<ab<<" "<<bc<<" "<<ac<<endl;
- if(ab >= 3 || bc >= 3 || ac >= 3) {cout<<"Impossible"<<endl;return 0;}
- if(ab == 0 || bc == 0 || ac == 0) {cout<<"Ambiguous"<<endl;return 0;}
- if(ab == 1 && bc == 1 && ac == 1) {cout<<"Ambiguous"<<endl;return 0;}
- // 2 2 1
- if(ab == 2 && bc == 2 && ac == 1) {calc_221(s1,s2,s3);return 0;}
- if(ab == 1 && bc == 2 && ac == 2) {calc_221(s3,s2,s1);return 0;}
- if(ab == 2 && bc == 1 && ac == 2) {calc_221(s1,s3,s2);return 0;}
- //DONE
- // 2 1 1
- if(ab == 2 && bc == 1 && ac == 1) {calc_211(s1,s2,s3);return 0;}
- if(ab == 1 && bc == 2 && ac == 1) {calc_211(s3,s2,s1);return 0;}
- if(ab == 1 && bc == 1 && ac == 2) {calc_211(s2,s1,s2);return 0;}
- // 2 2 2
- if(ab == 2 && bc == 2 && ac == 2) {calc_222(s1,s2,s3);return 0;}
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement