Submission #109584

#TimeUsernameProblemLanguageResultExecution timeMemory
109584ArturgoLamps (JOI19_lamps)C++14
47 / 100
1053 ms161092 KiB
#include <iostream> #include <bitset> using namespace std; int nbCars; string deb, fin; int dyn[1000000][16]; bool estPasse[1000000][16]; 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 minInters(int pos, bitset<4> bits) { if(pos == nbCars) { return bits.count(); } if(estPasse[pos][bits.to_ulong()]) return dyn[pos][bits.to_ulong()]; estPasse[pos][bits.to_ulong()] = true; 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(minInters(pos + 1, nouv) + (int)(nouv ^ bits).count(), mini); } } return (dyn[pos][bits.to_ulong()] = mini); } int main() { ios_base::sync_with_stdio(false); cin >> nbCars; cin >> deb >> fin; cout << minInters(0, bitset<4>(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...