This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <bitset>
using namespace std;
int nbCars;
string deb, fin;
int dyn[1000001][16];
inline bool execute(bool init, bitset<4> bits) {
if(bits[0])
init = 0;
if(bits[1])
init = 1;
if(bits[2])
init = 0;
if(bits[3])
init = !init;
return init;
}
int main() {
ios_base::sync_with_stdio(false);
cin >> nbCars;
cin >> deb >> fin;
for(int sol = 0;sol < 16;sol++) {
dyn[nbCars][sol] = bitset<4>(sol).count();
}
for(int pos = nbCars - 1;pos >= 0;pos--) {
for(int iBits = 0;iBits < 16;iBits++) {
bitset<4> bits(iBits);
int mini = 1000 * 1000;
for(int sol = 0;sol < 16;sol++) {
bitset<4> nouv(sol);
if(execute(deb[pos] - '0', nouv) == fin[pos] - '0') {
mini = min(dyn[pos + 1][sol] + (int)(nouv ^ bits).count(), mini);
}
}
dyn[pos][iBits] = mini;
}
}
cout << dyn[0][0] / 2 << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |