#include #include #include #include #include #include using namespace std; main() { int n, l; ifstream fin("input.txt"); ofstream fout("output.txt"); fin >> n >> l; //prendo in input n e l vector source(n), target(n); //dichiaro i due vettori for (int i = 0; i < n; i++) fin >> source[i]; //e li leggo da input for (int i = 0; i < n; i++) fin >> target[i]; int ret = 1000000; //dichiaro ret (valore max di n*l secondo specifiche) fin.close(); //chiudo il file di input sort(target.begin(), target.end()); //ordino il vettore target //quindi in target ho i numeri in una matrice di char ordinati for (int i = 0; i < n; i++) { //per ogni i-esimo gruppetto vector v = source; //copio source in v int cont = 0; for (int j = 0; j < l; j++){ //per ogni cifra del gruppetto if (v[0][j] != target[i][j]) { //se il primo valore del gruppetto è diverso da quelli target for (int k = 0; k < n; k++) v[k][j] ^= 1; //esegui lo xor su v cont++; //incremento cont ogni volta } } if (cont >= ret) continue; // se cont è piu grande di ret continua il ciclo, altrimenti fai un sort su v sort(v.begin(), v.end()); if (v == target) ret = cont; //se v è uguale al target, il valore da ritornare è cont. } if (ret == 1000000) { //se ret è rimasto a 1000000, significa che non ho trovato permutazioni fout << "NOT POSSIBLE"; } else { fout << ret; //altrimenti, lo scrivo su file } fout << endl; fout.close(); return 0; }