제출 #109586

#제출 시각아이디문제언어결과실행 시간메모리
109586ArturgoLamps (JOI19_lamps)C++14
47 / 100
1065 ms63748 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...