In this HackerEarth Binary Swap problem solution You are given two binary strings A and B of equal length. You have a type of opertion in which you can swap any two elements of string B. Your task is to find the minimum number of operations required to convert string B into string A. If it is not possible, print -1.


HackerEarth Binary Swap problem solution


HackerEarth Binary Swap problem solution.

#include <bits/stdc++.h>

#define ll long long
#define ull unsigned long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define be begin()
#define en end()
#define le length()
#define sz size()
#define all(x) (x).begin(),(x).end()
#define alli(a, n, k) (a+k),(a+n+k)
#define REP(i, a, b, k) for(__typeof(a) i = a;i < b;i += k)
#define REPI(i, a, b, k) for(__typeof(a) i = a;i > b;i -= k)
#define REPITER(it, a) for(__typeof(a.begin()) it = a.begin();it != a.end(); ++it)

#define y0 sdkfaslhagaklsldk
#define y1 aasdfasdfasdf
#define yn askfhwqriuperikldjk
#define j1 assdgsdgasghsf
#define tm sdfjahlfasfh
#define lr asgasgash
#define norm asdfasdgasdgsd
#define have adsgagshdshfhds

#define eps 1e-6
#define pi 3.141592653589793

using namespace std;

template<class T> inline T gcd(T a, T b) { while(b) b ^= a ^= b ^= a %= b; return a; }
template<class T> inline T mod(T x) { if(x < 0) return -x; else return x; }

typedef vector<int> VII;
typedef vector<ll> VLL;
typedef pair<int, int> PII;
typedef pair<ll, ll> PLL;
typedef pair<int, PII > PPII;
typedef vector< PII > VPII;
typedef vector< PPII > VPPI;

const int MOD = 1e9 + 7;
const int INF = 1e9;

// Template End


int main(int argc, char* argv[]) {
if(argc == 2 or argc == 3) freopen(argv[1], "r", stdin);
if(argc == 3) freopen(argv[2], "w", stdout);
ios::sync_with_stdio(false);
string a, b;
int o = 0, e = 0;
cin >> a >> b;
REP(i, 0, a.le, 1) {
if (a[i] != b[i]) {
if (b[i] == '1') o++;
else e++;
}
}
if (o == e) cout << o << endl;
else cout << -1 << endl;
return 0;
}

Second solution

#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
int o=0,z=0;
cin>>a>>b;
for(int i=0;i<a.size();i++)
{
if(a[i]!=b[i])
{
if(a[i]=='1')o++;
else z++;
}
}
if(o!=z)cout<<"-1\n";
else cout<<o<<"\n";
return 0;
}