Cod sursa(job #3170611)

Utilizator Vlad_NistorNIstor Vlad Vlad_Nistor Data 17 noiembrie 2023 20:37:42
Problema Iv Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
#define def void

ofstream cout("iv.out");
ifstream cin("iv.in");

int x[20], totalSize = 0, ans = 0, firstSize, secondSize;
int vf[30];
string a, b;
bool check(int pas){
    string str;
    for(int i = 0;i<totalSize;i++){
        if(x[i] < firstSize){
            str += a[i];
        }else{
            str += b[i - firstSize];
        }
    }
    string aux = str;
    reverse(aux.begin(), aux.end());
    return aux == str;
}

def backtrack(int pas){
    if(pas == totalSize + 1){
        ans += check(pas);
    }else{
        for(int i = 0;i<totalSize;i++){
            x[pas] = i;
            if(!vf[i]){
                vf[i] = 1;
                backtrack(pas + 1);
                vf[i] = 0;
            }
        }
    }
}


int main(void){
    cin >> a >> b;
    totalSize = a.size() + b.size();
    firstSize = a.size();
    secondSize = b.size();
    backtrack(1);
    cout << ans / 2; /// nu numaram de doua ori aceasi permutare (1,2,3) -> (3,2,1)
}